첫 성공만 cache하고 실패는 다음 호출에서 다시 시도한다.
source 미호출
get 대기
synchronized 안에서 생성
한 thread
값 미게시
다시 Uninitialized
성공 값 게시
같은 값 반환
핵심: failure cache 여부와 null 허용 여부를 use case가 정해야 한다.