본문 바로가기
728x90

동기화2

[JAVA] 자바 동기화의 정수 : CountDownLatch vs CyclicBarrier 완벽 비교 가이드 자바 멀티스레드 프로그래밍에서 여러 스레드의 작업 완료 시점을 맞추거나 특정 지점에서 스레드들을 대기시키는 것은 매우 까다로운 작업입니다. 자바의 java.util.concurrent 패키지는 이를 위해 CountDownLatch와 CyclicBarrier라는 두 가지 강력한 동기화 도구를 제공합니다. 비슷해 보이지만 그 목적과 작동 방식은 판이하게 다릅니다. 본 글에서는 실무에서 이들을 어떻게 선택하고 활용해야 하는지 전문적으로 분석해 보겠습니다.1. CountDownLatch: "결승선에서 기다리는 심판"CountDownLatch는 하나 이상의 스레드가 다른 스레드들의 일련의 작업이 완료될 때까지 기다리도록 하는 동기화 도구입니다. 카운트다운(Count Down)이라는 이름처럼 설정된 숫자가 0이 될.. 2026. 1. 22.
[JAVA] 자바 쓰레드 제어의 한 끗 차이 : sleep() vs wait() 완벽 분석 자바 멀티쓰레딩 환경에서 쓰레드를 일시적으로 정지시켜야 하는 상황은 매우 빈번하게 발생합니다. 이때 개발자들이 가장 많이 혼동하는 두 가지 메서드가 바로 Thread.sleep()과 Object.wait()입니다. 두 메서드 모두 쓰레드를 '대기' 상태로 만든다는 점에서는 비슷해 보이지만, 그 내부 동작 원리와 락(Lock)의 소유권 처리 방식은 완전히 상반됩니다. 이 차이를 정확히 이해하지 못하고 사용하면, 멀티쓰레드 애플리케이션에서 심각한 성능 저하나 데드락(Deadlock) 문제를 야기할 수 있습니다. 본 포스팅에서는 전문가의 시각에서 두 메서드의 메커니즘을 심층 비교하고, 실무에서 어떤 상황에 어떤 도구를 선택해야 하는지 명확한 가이드를 제시합니다.1. 핵심 차이점 요약sleep()과 wait().. 2026. 1. 21.
728x90