java - 如何在 Java 中运行与主线程分开的线程?

标签 java multithreading parallel-processing

目标是能够从主类中调用独立线程的执行。

一些背景: 我有一个程序必须运行一个进程。 进程(一个 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/

相关文章:

Python 哪个线程先启动?

java - Android 操作系统是否有一个由所有应用程序共享的 `ContentResolver` 对象,或者每个应用程序是否都有自己的 `ContentResolver` 实例?

java - 如何调用以对象作为参数的方法?

multithreading - 线程安全的数据结构设计

parallel-processing - 在 Julia 中使用 @distributed 时可能的 reducer 函数列表

c++ - 优化重复系数评估

c++ - 锁在并行编程中是如何工作的?

java - JavaFX 中的 KeyCode 组合 Control + LEFT 或 Ctrl + RIGHT 键

java - 如何在Java 1.6中将UTC日期转换为本地日期

python - 为什么在 Tornado 服务器 Post 方法中创建线程会出现运行时错误?