繁体   English   中英

Java中的线程池问题

[英]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.");
        }

当应用程序运行时,它陷入了循环

  • 等待134个作业完成。
  • 等待134个作业完成。
  • 等待134个作业完成。

上面的语句是连续出现的,实际上线程正在对数据库执行更新操作。将时间增加到10秒以上将在这种情况下有所帮助。任何建议都是有帮助的

ThreadPoolExecutor.shutdown()的文档说:

启动有序关闭,在该关闭中执行先前提交的任务,但不接受任何新任务。 如果已关闭,则调用不会产生任何其他影响。

这意味着您的工作线程负责关闭自己。 您尚未为员工提供代码,但我假设他们正在执行不会退出的阻塞操作。 解决此问题的常用方法是让工作人员例行检查在shutdown调用之前设置的某种共享变量。 他们被有效告知他们停止所做的任何事情。 AtomicBoolean应该可以解决问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM