java中的线程池问题

java中的线程池问题,java,thread-synchronization,java-threads,Java,Thread Synchronization,Java Threads,HI以下代码用于应用程序中 threadPool.shutdown(); while (!threadPool.awaitTermination(10, TimeUnit.SECONDS)) { logger.info("Waiting for " + (threadPool.getQueue().size() + threadPool .getActiveCo

HI以下代码用于应用程序中

threadPool.shutdown();
        while (!threadPool.awaitTermination(10, TimeUnit.SECONDS)) {
            logger.info("Waiting for "
                    + (threadPool.getQueue().size() + threadPool
                            .getActiveCount()) + " jobs to complete.");
        }
当应用程序运行时,它在循环中运行

  • 等待134个工作完成
  • 等待134个工作完成
  • 等待134个工作完成
上面的语句将继续出现,实际上线程正在数据库上执行更新操作。将时间增加到10秒以上将有助于解决此问题。任何建议都很有帮助。

文档说明:

启动有序关机,在该关机过程中,以前提交的任务将被删除 已执行,但不会接受新任务。调用没有任何限制 如果已经关闭,则会产生附加效果


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

实际上,工人正在执行一些业务操作。对于少数方法,添加了synchronized关键字。synchronized关键字会导致上述情况吗?