반응형

CountDownLatch는 어떤 쓰레드가 다른 쓰레드에서,
작업이 완료될 때 까지 기다릴 수 있도록 해주는 클래스입니다.

병렬처리할 때,
CountDownLatch를 사용하면 다음 코드(statements)를 실행하지 않고 기다리도록 만들 수 있습니다.
다른 Thread에서 이 작업을 수행하도록 하고 Main thread는 일정 시간을 초과하면 작업을 기다리지 않도록, Timeout을 설정할 수 있습니다.
await은 Latch의 숫자가 0이 될 때까지 기다리는 코드임.


아래는 처음에 5로 셋팅.


- CountDownLatch countDownLatch = new CountDownLatch(5); 의 뜻

누군가 countDownLatch.countDown();를 5번 호출하지 않으면
countDownLatch.await();는 무한정 기다리게됨.

countDownLatch.await(5, TimeUnit.SECONDS); <-얘는 무한정이아니라
최대 5초만 기다리게함.

즉, 5번호출 되면 Latch는 0이되고,
countDownLatch.await();는 통과함.

반응형