Take a look at this code:
public class ThreadTest {
public static void main(String[] args) {
new Thread(new Runnable() {
@Override
public void run() {
while(true) {
//some code here
}
}
}).start();
System.out.println("End of main");
}
}
Normally, when the end of main is reached, the program terminates. But in this example, the program will prints "End of main" and then keeps running because the thread is still running. Is there a way that the thread can stop automatically when the end is reached, without using something like while(isRunning)?
解决方案
The thread you are creating is independent and does not depends on the Main Thread termination. You can use Daemon thread for same. Daemon threads will be terminated by the JVM when there are none of the other threads running, it includes a main thread of execution as well.
public static void main(String[] args) {
Thread t = new Thread(new Runnable() {
@Override
public void run() {
while (true) {
System.out.println("Daemon thread");
}
}
});
t.setDaemon(true);
t.start();
System.out.println("End of main");
}