Java에서 스레드 출력 대기: 동기화 딜레마
멀티 스레드 Java 애플리케이션에서는 여러 스레드의 실행을 조정하는 것이 중요합니다. 데이터 무결성 및 애플리케이션 응답성. 한 스레드가 다른 스레드의 출력에 의존하면 동기화 메커니즘이 작동합니다. 이러한 시나리오 중 하나는 다음 질문에 설명되어 있습니다.
질문:
Java 스레드(이하 "앱 스레드"라고 함)를 어떻게 대기시키나요? 다른 스레드("db 스레드")가 작업을 완료하고 출력을 제공할 준비가 될 때까지? db 스레드는 애플리케이션의 수명 내내 활성 상태를 유지해야 하며 두 스레드는 동시에 실행되어야 합니다. DB 스레드가 준비될 때까지 앱 스레드를 차단하는 것이 허용되는 해결책입니다.
답변:
이 동기화 문제를 해결하는 열쇠는 CountDownLatch를 사용하는 데 있습니다. CountDownLatch는 진행하기 전에 특정 개수에 도달할 때까지 여러 스레드가 대기할 수 있도록 하는 동기화 구성입니다. 이 경우:
// Create a CountDownLatch with a counter of 1 CountDownLatch latch = new CountDownLatch(1);
대기가 필요한 앱 스레드에서:
// The app thread waits for the db thread to complete latch.await();
db 스레드에서 작업이 완료되고 출력이 준비된 후:
// The db thread signals the app thread to proceed latch.countDown();
이 메커니즘은 db 스레드가 작업을 완료할 때까지 앱 스레드가 진행되지 않도록 합니다. 앱 스레드는 CountDownLatch의 개수가 0에 도달할 때까지 대기하므로 db 스레드가 준비되면 두 스레드가 동시에 실행될 수 있습니다. 이 접근 방식은 스레드 실행과 데이터 무결성을 모두 유지하면서 스레드 동기화에 대한 깔끔하고 효율적인 솔루션을 제공합니다.
위 내용은 Java 스레드가 다른 스레드의 출력을 기다리게 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!