하나 이상의 스레드가 다른 스레드에서 수행되는 일련의 작업이 완료될 때까지 기다릴 수 있게 해주는 동기화 보조 도구이다.
CountDownLatch 는 주어진 카운트로 초기화되고 await() 메서드는 현재 카운트가 countDown() 메서드의 호출로 인해 0이 될 때까지 블록되며 그 이후에 모든 대기 중인 스레드가 해제되고 await() 이후 처리가 이루어진다.
CountDownLatch
await()
countDown()
CountDownLatch는 일회성으로 처리된다. 즉, 카운트를 재설정 할 수 없다.(카운트를 재설정하는 버전이 필요한 경우 CyclicBarrier를 사용한다.)
CyclicBarrier
한 스레드가 여러 번 countDown() 을 호출해도 된다.
여러 개의 스레드가 병렬로 실행되는 경우 특정 작업이 시작되거나 완료될 때까지 다른 스레드들이 기다리도록 할 수 있다.
여러 스레드가 초기화 작업을 마칠 때까지 기다렸다가 모든 스레드가 완료되면 마무리 작업을 수행할 수 있다.
이전 ↩️ - Java 동기화 도구 - AtomicFieldUpdaterarrow-up-right
메인 ⏫arrow-up-right
다음 ↪️ - Java 동기화 도구 - CyclicBarrierarrow-up-right
Last updated 3 months ago