我遇到了一个Tomcat服务器无法正常关闭的问题。在我发出关闭命令后,我进行了线程转储,并且它看起来像这样:
我认为导致虚拟机无法关闭的“嫌疑”线程是名为“pool-4-thread-1”的线程。其余线程都是守护线程或内部虚拟机线程。在尝试找出此线程用途时,我注意到还有其他Java程序创建了类似名称的线程(例如,JVisualVM创建此类线程)。因此,我想知道是否有人知道这个线程是什么以及如何创建它。我遇到了一个Tomcat服务器无法正常关闭的问题。在我发出关闭命令后,我进行了线程转储,并且它看起来像这样:
我认为导致虚拟机无法关闭的“嫌疑”线程是名为“pool-4-thread-1”的线程。其余线程都是守护线程或内部虚拟机线程。在尝试找出此线程用途时,我注意到还有其他Java程序创建了类似名称的线程(例如,JVisualVM创建此类线程)。因此,我想知道是否有人知道这个线程是什么以及如何创建它。这些线程很可能是由你在代码中某处创建的ExecutorService(直接或间接通过库)创建的,并且需要被关闭(例如在ServletContextListener中)。
com.google.common.util.concurrent.ThreadFactoryBuilder
设置名称,就像这样:Executors.newFixedThreadPool(2, new ThreadFactoryBuilder().setNameFormat("thread-name-%d").build())
。 - KirEvse