검사 후 삽입의 경쟁 창

개별 메서드가 안전해도 두 호출 사이 업무 원자성은 보장되지 않는다.

  1. 부재 확인

    두 스레드가 같은 키가 없음을 각각 확인한다.

  2. 중복 계산

    각자 외부 로더나 값 생성을 실행한다.

  3. 첫 삽입

    한 계산 결과가 맵에 저장된다.

  4. 둘째 덮어쓰기

    다른 결과가 들어와 중복 비용과 순서 의존을 만든다.

핵심: putIfAbsent나 compute처럼 복합 의미를 제공하는 한 연산을 사용한다.