要使用队列建立生产者/消费者线程,有两个主要组件:执行器服务,以及(如果需要)阻塞队列。
首先放置所有一个执行程序服务中的生产者和另一个执行程序服务中的所有消费者。
如果服务之间需要通信,请使用阻塞队列。例如:
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中文网其他相关文章!