【发布时间】:2010-04-21 15:58:43
【问题描述】:
到目前为止,我将我的应用程序用作独立产品。所以,当用户按下“停止”按钮时,我打电话给System.exit(0);,这很好。
现在我的应用程序将被另一个程序调用(以编程方式)。所以,我担心System.exit(0); 不仅会杀死我的进程,还会杀死启动我程序的外部软件。
那么,如果收到来自外部软件的相应请求,关闭我的应用程序的正确方法是什么?我的应用程序是一个 GUI 应用程序。所以,我想关闭窗口,但我也想关闭我的程序执行的所有进程。
添加:
更具体地说,我想关闭我的程序启动的所有线程。我的程序没有启动任何操作系统进程或任何其他程序。
【问题讨论】:
-
@Roman: by "processes executed by my program" 你是指你的 Java 程序正在运行的所有线程还是你的程序产生的所有线程,比如说,其他可执行文件(Un* x shell 进程、.exe、在其 VM 中运行的其他 Java 程序,等等)?
-
@WizardOfOdds,我的意思是“我的 Java 程序正在运行的所有线程”。
-
你的程序是如何被调用的?它的某些方法是否被已经运行的 Java 程序调用,所以这两个有效地成为一个程序?或者其他程序是否在进行系统调用以使用您的程序启动新的 Java VM?
-
我在下面给出的答案描述了如何正确终止线程 - 而不是进程。希望对您有所帮助。
标签: java api exit termination