지금까지 Java의 동시성 도구들을 하나씩 살펴봤다.volatile, synchronized, Lock, Atomic, Thread Pool, CompletableFuture, Concurrent Collections까지.이제 중요한 질문은 이것이다. 이 도구들을 어디까지 믿어도 되는가? 그리고 무엇은 반드시 의심해야 하는가? 이 글에서는 Java Concurrency를 기능 나열이 아니라 판단 기준으로 정리한다.1. Java가 보장하는 것의 경계Java는 동시성 문제를 해결해주지 않는다.Java가 제공하는 것은명확한 규칙최소한의 보장뿐이다.즉, “이 규칙을 지키면 이 정도까지는 보장한다” 라는 계약을 제공할 뿐이다.그 계약을 벗어난 동작에 대해서는 아무런 약속도 하지 않는다.2. 믿어도 되는 것다음은 ..