【发布时间】:2015-01-07 08:38:07
【问题描述】:
一般情况
即使有(非守护程序)线程仍在运行,我也希望能够关闭我的 Java 应用程序。在Java中可能吗? (来自 C++ 世界,这似乎是一个基本要求)
原因
我正在构建一个框架来加载实现接口的外部插件。在关闭之前,我在每个插件上调用close() 函数,期望它释放所有资源并停止他的所有线程。但由于该插件是由我工作场所的几个团队构建的,我无法真正控制它们,而且不止一次有人没有关闭他的所有线程,导致应用程序卡在关闭阶段。
我想在调用每个插件close()函数后强行关闭程序,如果他们不照顾自己的资源,那是他们自己的问题......
【问题讨论】:
-
@MarounMaroun
System.exit(int)无论运行什么线程,都会关闭 JVM。 -
请注意,这相当于在这些线程上使用
SIGKILL。这是最后的努力,这些组件的所有者需要大声疾呼。 -
告诉您的团队不允许使用非托管线程 - 他们需要通过某种 ExecutorService。这可以集中管理,例如下降时。
标签: java multithreading shutdown java-threads