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如何通知长时间运行的线程“停止”[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何优雅地停止长时间执行的线程?

在qthread中停止长时间运行的进程

在 qthread 中停止长时间运行的进程

如何停止长时间运行的 BigQuery 作业?

如何在Matlab中停止正在运行的脚本[重复]

如何使用javascript在asp.net上停止正在进行的回发(长时间运行)?