(来自IDE-Style program running的个别问题)
答案 0 :(得分:3)
您最好的选择可能是通过ProcessBuilder
分离新的JVM。
然而,可以使用ThreadGroups终止内部程序(以及它产生的所有线程)。 (我不推荐它。它使用stop
方法,根据文档“ 不推荐 。这种方法本质上是不安全的。 Thread.stop()了解详情。“):
public class Main {
public static void main(String args[]) throws InterruptedException {
ThreadGroup internalTG = new ThreadGroup("internal");
Thread otherProcess = new Thread(internalTG, "Internal Program") {
public void run() {
OtherProgram.main(new String[0]);
}
};
System.out.println("Starting internal program...");
otherProcess.start();
Thread.sleep(1000);
System.out.println("Killing internal program...");
internalTG.stop();
}
}
class OtherProgram {
public static void main(String[] arg) {
for (int i = 0; i < 5; i++)
new Thread() {
public void run() {
System.out.println("Starting...");
try {
sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Stopping...");
}
}.start();
}
}
输出:
Starting internal program...
Starting...
Starting...
Starting...
Starting...
Starting...
Killing internal program...
答案 1 :(得分:0)
第二种选择可能是烦人的臭虫的无穷无尽的来源。