Supplier memoization 상태

첫 성공만 cache하고 실패는 다음 호출에서 다시 시도한다.

1

Uninitialized

source 미호출

get 대기

2

Computing

synchronized 안에서 생성

한 thread

3

Failed

값 미게시

다시 Uninitialized

4

Initialized

성공 값 게시

같은 값 반환

핵심: failure cache 여부와 null 허용 여부를 use case가 정해야 한다.