此问题与:Shutdown ExecutorService gracefully in webapp?
有关我有一个供多个客户使用的库。一个客户端是一个简单的“java -jar ...”调用,一个是Tomcat服务器,另一个是Spring容器。
此库将消息发布到队列,并且某些客户端每分钟发布如此多的消息,以致同步发布的行为会降低性能。我实现了ExecutorService
以将实际发布卸载到工作线程。然而,这种策略的性能非常出色,客户端的Spring容器不再干净地关闭。 是的,我的线程已经是守护程序线程,但是,它们又使用了一个不使用守护程序线程的库。
链接文章显示在servlet内部运行时需要不同的策略。到目前为止我只遇到过几个客户端容器,我已经不得不实现专门的关机程序了。
而不是涉及特定用例,我的问题更为笼统。如何编写使用ExecutorService的库代码,同时保持与运行代码的容器的线程模型无关?