0

一般来说
,即使有(非守护程序)线程仍在运行,我也希望能够关闭我的 Java 应用程序。在Java中可能吗?(来自 C++ 世界,这似乎是一个基本要求)

原因
我正在构建一个框架来加载实现接口的外部插件。在关闭之前,我close()在每个插件上调用一个函数,期望它释放所有资源并停止他的所有线程。但是由于该插件是由我工作场所的几个团队构建的,我无法真正控制它们,而且不止一次有人没有关闭他的所有线程,导致应用程序卡在关闭阶段。
我想在调用每个插件close()函数后强行关闭程序,如果他们不照顾他们的资源,那是他们自己的问题......

4

2 回答 2

3

我认为与其让所有插件到处创建线程,不如在主程序中创建一个线程池并让插件有可能向它提交 Runnables 和 Callables。这将使您能够控制插件中的并发任务,即如果有 100 个插件,则不必有 100 个线程。

重新启动程序后,您可以在池上调用 shutdown,让插件任务有时间整理资源。您也可以定义超时。

于 2015-01-07T09:04:19.247 回答
1

退出程序尝试

 System.exit(0);

并尝试

 finalize();

如果你想释放资源

于 2015-01-07T08:44:50.060 回答