目标是能够从主类中调用独立线程的执行。
一些背景: 我有一个程序必须运行一个进程。 进程(一个 cmd one) 应该只在主程序执行完毕并从内存中卸载时运行。
我应该在主类中包含什么代码?
最佳答案
如果您的意思是:我如何启动一个不会在我的 JVM(java 程序)结束时结束的 Java 线程?。
答案是:你不能那样做。
因为在 Java 中,如果 JVM 退出,则所有线程都完成了。这是一个例子:
class MyRunnable implements Runnable {
public void run() {
while ( true ) {
doThisVeryImportantThing();
}
}
}
上面的程序可以从你的主线程启动,例如,这段代码:
MyRunnable myRunnable = new MyRunnable();
Thread myThread = new Thread(myRunnable);
myThread.start();
这个示例程序永远不会停止,除非 doThisVeryImportantThing
中的某些东西会终止该线程。您可以将其作为守护进程运行,如本例所示:
MyRunnable myRunnable = new MyRunnable();
Thread myThread = new Thread(myRunnable);
myThread.setDaemon(true); // important, otherwise JVM does not exit at end of main()
myThread.start();
这将确保,如果 main() 线程结束,它也会终止 myThread。
然而,您可以从 java 启动不同的 JVM,为此您可能想查看这个问题: Launch JVM process from a Java application use Runtime.exec?
关于java - 如何在 Java 中运行与主线程分开的线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4005350/