【发布时间】:2014-01-06 23:09:53
【问题描述】:
我正在编写代码,我需要确保在提交结果之前没有线程当前在线程池中运行(以避免丢失我应该放入提交中的数据)。为此,我正在使用:
while (_executor.getActiveCount() > 0)
{
try
{
Thread.sleep(10); // milliseconds
}
catch (InterruptedException e)
{
// OK do nothing
}
}
但一位同事在评论中指出,getActiveCount 的文档指出:
- 返回活动线程的大致数量
- 执行任务。
那么,当池中仍有活动线程时,我是否会退出 while 循环?如果是这样,等待我的所有工作线程完成的正确方法是什么?
编辑:提供更多上下文:这是一个在线系统,其中包含执行程序服务的任务会无限期地运行。工作通过消息系统进入,放在执行程序中的一个线程上,不需要任何同步,然后工作进入消息系统的另一个队列。我不想杀死执行者等待任务完成。
【问题讨论】:
-
你能不能等待任务的执行而不是等待执行者没有工作? stackoverflow.com/questions/12896755/…
标签: java concurrency threadpool