큐가 있는 생산자/소비자 스레딩을 설정하려면 실행자 서비스와 필요한 경우 차단이라는 두 가지 기본 구성 요소가 있습니다. queue.
모든 생산자를 한 곳에 배치하는 것부터 시작하세요. Executor 서비스와 모든 소비자는 또 다른 서비스입니다.
서비스 간 통신이 필요한 경우에는 Blocking Queue를 활용하세요. 예를 들면 다음과 같습니다.
final ExecutorService producers = Executors.newFixedThreadPool(100); final ExecutorService consumers = Executors.newFixedThreadPool(100); while (/* has more work */) { producers.submit(...); } producers.shutdown(); producers.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS); consumers.shutdown(); consumers.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS);
생산자 스레드는 통신을 위해 별도의 차단 대기열을 사용하는 대신 소비자 스레드에 직접 작업을 제출합니다. 이 접근 방식은 동시성과 효율성을 유지하면서 구현을 단순화합니다.
위 내용은 대기열을 사용하여 생산자/소비자 스레드를 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!