我有实现包含/health
的各种端点的Web服务。
如果服务器已启动且运行正常,/health
将返回200 OK
,并且可以连接到后端MongoDB。
有看门狗线程定期轮询/health
端点(每5分钟一次),如果它得到200 OK
以外的任何东西,它会调用System.exit(-1)
,这会停止Web服务器,但它不会'杀死这个过程。一些线程仍在运行。
我该如何解决这个问题?
答案 0 :(得分:0)
我认为无法保证杀死进程也会杀死所有线程。使用System.exit
的更多方法是错误的。使用Thread.interrupt
另一种我认为更好的方法来处理它的一种可能方法是使用ExecutorService
来管理线程
答案 1 :(得分:0)
如果没有重要的未保存状态,请尝试Runtime.halt()
作为快速解决方案。它基本上等效于SIGKILL
(不会进行任何清理)。