Java - 强制关闭程序(使用正在运行的线程)

Java - Force Close Program (with running threads)

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

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

退出程序试试

 System.exit(0);

并尝试

 finalize();

如果你想释放资源

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

一旦你重新启动你的程序,你就可以在池上调用关闭,让插件任务有时间整理资源。您也可以定义超时。