>  기사  >  Java  >  Java 스레드가 다른 스레드의 출력을 기다리게 만드는 방법은 무엇입니까?

Java 스레드가 다른 스레드의 출력을 기다리게 만드는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-11 17:59:02369검색

How to Make a Java Thread Wait for Output from Another Thread?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.