【发布时间】:2018-09-06 08:12:59
【问题描述】:
我的应用程序正在调用:
ScheduledExecutorService scheduler = new ScheduledThreadPoolExecutor(1);
// schedule some tasks
scheduler.shutdown();
if (!scheduler.awaitTermination(10, TimeUnit.SECONDS))
System.out.println("Boom!");
无论我做什么,我似乎都无法让awaitTermination() 返回true。这尤其令人困惑,因为我可以(使用调试器)看到调度程序线程完全空闲。
使用scheduler.getQueue() 我注意到在调用scheduler.shutdown() 之后队列中只剩下一个任务。任务状态为“未完成”,表示它正在等待执行且未被取消。
- 为什么
shutdown()不取消这个任务? - 队列中剩余的任务是否阻止
awaitTermination()返回true?
我知道shutdownNow(),但我不想打断正在运行的任务。
【问题讨论】: