Java - 强制关闭程序(使用正在运行的线程)
Java - Force Close Program (with running threads)
一般
即使有(非守护进程)线程仍在运行,我也希望能够关闭我的 Java 应用程序。 Java 有可能吗? (来自 C++ 世界,这似乎是一个基本要求)
原因
我正在构建一个框架来加载实现接口的外部插件。在关闭之前,我在每个插件上调用一个 close()
函数,希望它释放所有资源并停止他的所有线程。但由于该插件是由我工作场所的多个团队构建的,我无法真正控制它们,而且不止一次有人没有关闭他的所有线程,导致应用程序卡在关闭阶段。
我想在调用每个插件close()
函数后强行关闭程序,如果他们没有照顾好他们的资源那是他们自己的问题...
退出程序试试
System.exit(0);
并尝试
finalize();
如果你想释放资源
我认为与其让所有插件到处创建线程,不如在主程序中创建一个 thread pool 并让插件可以向其提交 Runnable 和 Callable。这将使您能够控制插件中的并发任务,即如果有 100 个插件,则不必有 100 个线程。
一旦你重新启动你的程序,你就可以在池上调用关闭,让插件任务有时间整理资源。您也可以定义超时。
一般
即使有(非守护进程)线程仍在运行,我也希望能够关闭我的 Java 应用程序。 Java 有可能吗? (来自 C++ 世界,这似乎是一个基本要求)
原因
我正在构建一个框架来加载实现接口的外部插件。在关闭之前,我在每个插件上调用一个 close()
函数,希望它释放所有资源并停止他的所有线程。但由于该插件是由我工作场所的多个团队构建的,我无法真正控制它们,而且不止一次有人没有关闭他的所有线程,导致应用程序卡在关闭阶段。
我想在调用每个插件close()
函数后强行关闭程序,如果他们没有照顾好他们的资源那是他们自己的问题...
退出程序试试
System.exit(0);
并尝试
finalize();
如果你想释放资源
我认为与其让所有插件到处创建线程,不如在主程序中创建一个 thread pool 并让插件可以向其提交 Runnable 和 Callable。这将使您能够控制插件中的并发任务,即如果有 100 个插件,则不必有 100 个线程。
一旦你重新启动你的程序,你就可以在池上调用关闭,让插件任务有时间整理资源。您也可以定义超时。