HI在应用程序中使用以下代码
threadPool.shutdown();
while (!threadPool.awaitTermination(10, TimeUnit.SECONDS)) {
logger.info("Waiting for "
+ (threadPool.getQueue().size() + threadPool
.getActiveCount()) + " jobs to complete.");
}
当应用程序运行时,它在循环中被触发
上面的语句是连续出现的,实际上线程正在对数据库执行更新操作。在这种情况下,将时间增加到10秒以上会有所帮助。任何建议都有帮助
答案 0 :(得分:0)
ThreadPoolExecutor.shutdown()
的文档说:
启动以前提交的任务的有序关闭 已执行,但不会接受任何新任务。调用没有 如果已经关闭,则会产生额外的影响。
这意味着您的工作线程负责关闭自己。您没有为您的工作人员提供代码,但我假设他们正在执行无法退出的阻止操作。解决此问题的常用方法是让工作人员定期检查在shutdown
调用之前设置的某种共享变量。他们被有效地告知要停止他们正在做的事情。 AtomicBoolean
应该可以解决问题。