[英]Thread pool issue in java
嗨,以下代码在应用程序中使用
threadPool.shutdown();
while (!threadPool.awaitTermination(10, TimeUnit.SECONDS)) {
logger.info("Waiting for "
+ (threadPool.getQueue().size() + threadPool
.getActiveCount()) + " jobs to complete.");
}
当应用程序运行时,它陷入了循环
上面的语句是连续出现的,实际上线程正在对数据库执行更新操作。将时间增加到10秒以上将在这种情况下有所帮助。任何建议都是有帮助的
ThreadPoolExecutor.shutdown()
的文档说:
启动有序关闭,在该关闭中执行先前提交的任务,但不接受任何新任务。 如果已关闭,则调用不会产生任何其他影响。
这意味着您的工作线程负责关闭自己。 您尚未为员工提供代码,但我假设他们正在执行不会退出的阻塞操作。 解决此问题的常用方法是让工作人员例行检查在shutdown
调用之前设置的某种共享变量。 他们被有效告知他们停止所做的任何事情。 AtomicBoolean
应该可以解决问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.