来自其中一个线程的System.exit(-1)并没有结束java进程

时间:2017-05-03 05:45:48

标签: java multithreading

我有实现包含/health的各种端点的Web服务。 如果服务器已启动且运行正常,/health将返回200 OK,并且可以连接到后端MongoDB。 有看门狗线程定期轮询/health端点(每5分钟一次),如果它得到200 OK以外的任何东西,它会调用System.exit(-1),这会停止Web服务器,但它不会'杀死这个过程。一些线程仍在运行。 我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

我认为无法保证杀死进程也会杀死所有线程。使用System.exit的更多方法是错误的。使用Thread.interrupt另一种我认为更好的方法来处理它的一种可能方法是使用ExecutorService来管理线程

答案 1 :(得分:0)

如果没有重要的未保存状态,请尝试Runtime.halt()作为快速解决方案。它基本上等效于SIGKILL(不会进行任何清理)。