How to run a thread separate from main thread in Java?
Create a separate thread that executes your external program:
class MyRunner implements Runnable{
public void run(){
Runtime.exec("your cmd")
}
}
then start the thread in your main():
MyRunner myRunner = new MyRunner();
Thread myThread = new Thread(myRunner);
myThread.start();
This way your main program will continue running, while your background thread will start an external process and exit when this program exits.
If you mean: how can I start a Java thread that will not end when my JVM (java program) does?.
The answer is: you can't do that.
Because in Java, if the JVM exits, all threads are done. This is an example:
class MyRunnable implements Runnable {
public void run() {
while ( true ) {
doThisVeryImportantThing();
}
}
}
The above program can be started from your main thread by, for example, this code:
MyRunnable myRunnable = new MyRunnable();
Thread myThread = new Thread(myRunnable);
myThread.start();
This example program will never stop, unless something in doThisVeryImportantThing
will terminate that thread. You could run it as a daemon, as in this example:
MyRunnable myRunnable = new MyRunnable();
Thread myThread = new Thread(myRunnable);
myThread.setDaemon(true); // important, otherwise JVM does not exit at end of main()
myThread.start();
This will make sure, if the main() thread ends, it will also terminate myThread.
You can however start a different JVM from java, for that you might want to check out this question: Launch JVM process from a Java application use Runtime.exec?