JVM如何通知长时间运行的线程“停止”[重复]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JVM如何通知长时间运行的线程“停止”[重复]相关的知识,希望对你有一定的参考价值。
这个问题在这里已有答案:
我了解到JVM没有调用thread.interrupt()方法来阻止来自https://stackoverflow.com/a/28731735/3034458的线程
那它在这里真的有用吗? JVM如何关闭/停止线程?
答案
JVM本身不调用中断,它只是在你调用System :: exit或者用户ctrl-c是应用程序时停止线程冷(线程只是停在他们正在做的任何操作的中间 - 这就是原因不建议使用System :: exit);
只是停止我的意思是残酷 - 就像你在两行代码之间而第二行没有被执行,它甚至可以在函数调用中将你抛弃。
有一种方法可以注册一个关闭钩子来控制这种行为,我只是给你你应该期望的默认行为。
如果你的所有非守护程序线程都安静地退出,那么守护程序线程就会被停止,就像你调用了System :: exit一样;
在正常情况下,您的应用应该作为来自用户的请求处理关闭,手动停止所有线程并干净地退出。这是Thread :: interrupt派上用场的地方。
以上是关于JVM如何通知长时间运行的线程“停止”[重复]的主要内容,如果未能解决你的问题,请参考以下文章