【发布时间】:2016-03-19 09:02:58
【问题描述】:
我有一个带有很多线程的 ThreadPool。 如果此线程池的每个线程都在等待 BlockingQueue,则任务完成。我怎样才能确定是否每个线程都在等待,以便我可以关闭线程池?
【问题讨论】:
-
你打算如何关闭线程池?
-
是的,那是另一个问题...是否有可能终止线程池中的所有等待线程?还是只是中断线程池中的所有线程?
-
BlockingQueue docs BlockingQueue 本质上不支持任何类型的“关闭”或“关闭”操作来指示不会添加更多项目。此类功能的需求和使用往往取决于实现。例如,一种常见的策略是生产者插入特殊的流尾或有毒对象,当消费者采用时会相应地解释。
-
所以基本上当你完成将可处理的项目推入队列时,你将接收线程解释为关闭信号的项目放入。
标签: java multithreading thread-safety threadpool blockingqueue