<aside> 🔥 스레드를 다루는 메서드 중 wait()과 notify()가 있으며 두개 모두 Object의 메서드다 wait()은 스레드가 일시정지 상태로 돌아가도록 한다. notify()는 일시정지 상태인 스레드 중 하나를 실행대기 상태로 만든다. notifyAll()은 일시정지 상태인 스레드를 모두 실행대기 상태로 만들어준다.
하지만 자바5부터 도입된 동시성 유틸리티가 이 작업들을 대신 해주기 때문에 사용할 일이 거의 없다.
</aside>
java.util.concurrent
패키지는 고수준의 동시성 유틸리티를 제공한다. 크게 세가지로 분류되며 실행자 프레임워크, 동시성 컬렉션, 동기화 장치로 나눌 수 있다. 이번 장에서는 동시성 컬렉션, 장치를 살펴본다 !
List
, Queue,
Map
같은 표준 컬렉션 인터페이스에 동시성을 가미해 구현한 고성능 컬렉션이다.<aside> 🔥 동시성 컬렉션에서 동시성을 무력화하지 못하기 때문에 여러 메서드를 원자적으로 묶어 호출하는 일 역시 불가능하다. 그래서 여러 기본 동작을 하나의 원자적 동작으로 묶는 “상태 의존적 수정” 메서드들이 추가되었다.
</aside>
HashMap
- 동시성 고려 안함HashTable
- 동시성 고려를 하지만 메서드 단위이기 때문에 느릴 수 있다.ConcurrentHashMap
- 동시성고려, 메서드를 통으로 동기화처리한 HashTable보다 빠르다.