守护线程与用户线程
守护线程 Daemon Thread
依赋于用户线程,如果JVM 中存在一个或一个以上的非守护线程,那么该线程就不会被结束。
Thread dameonThread = new Thread();
dameonThread.setDaemon(true);
用户线程 User Thread
与守护线程不同的是,该线程在代码结束完后就会被回收。
测试代码
守护线程
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("child thread begin running");
try {
Thread.sleep(60 * 1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
thread.setDaemon(true);
thread.start();
Thread.sleep(1000);
守护线程会在非守护进程结束后马上结束
1S 后
用户线程
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("child thread begin running");
try {
Thread.sleep(60 * 1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
thread.setDaemon(false);
thread.start();
Thread.sleep(1000);
运行后
30S 后 线程依旧存在