CountDownLatch

de_sj_awa·2021년 4월 26일
0
post-custom-banner

CountDownLatch는 언제 쓰는가?

쓰레드를 N개 실행했을 때, 일정 개수의 쓰레드가 모두 끝날 때까지 기다려야만 진행할 수 있거나 다른 쓰레드를 실행시킬 수 있는 경우 사용한다. 예를 들어 리스트에 어떤 자료구조가 있고, 각 자료구조를 병렬로 처리한 후 배치(batch)로 데이터베이스를 업데이트 한다거나 다른 시스템으로 push 하는 경우가 있다.

CountDownLatch 작동 원리

CountDownLatch는 다음과 같이 생성할 수 있다. 인자로 Latch의 숫자를 전달한다.

CountDownLatch countDownLatch = new CountDownLatch(5);

다음과 같이 countDown()을 호출하면 Latch의 숫자가 1개씩 감소한다.

countDownLatch.countDown();

await()는 Latch의 숫자가 0이 될 때까지 기다리는 코드이다.

countDownLatch.await();

다른 쓰레드에서 countDown()을 5번 호출하게 된다면 Latch는 0이 되며, await()는 더 이상 기다리지 않고 다음 코드를 실행하게 된다.

즉, CountDownLatch는 메인 쓰레드에서 작업을 처리하는 쓰레드를 만들고 실행한다. 그리고 개별 쓰레드가 CountLatch의 값을 하나씩 제거하면, 메인 쓰레드가 시그널을 받아서 흐름을 진행하는 형태이다.

참고

profile
이것저것 관심많은 개발자.
post-custom-banner

0개의 댓글