- 守护线程定义
与守护线程相对应就是用户线程,用户线程可以理解为系统工作的线程,而守护线程守护的就是用户线程。当用户线程全部执行完毕,守护线程才会跟着结束。
也就是说守护线程必须伴随着用户线程,如果一个应用内只存在一个守护线程,没有用户线程,那么守护线程自然会退出。 - 简单应用
public class DemoController {
static class DaemonThread{
public static void execute(){
for (int i = 0;;i++ ){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(i);
}
}
}
public static void main(String[] args) throws IOException {
Thread thread = new Thread(() -> execute());
thread.setDaemon(true);
thread.start();
System.in.read();
}
}
创建一个简单线程,设置daemon为true即表示设置为守护线程,这里主线程是用户线程阻塞任何一个系统输入后退出,守护线程守护的是主线程,守护线程每隔1s打印i的值,直到主线程输入任何一个字符退出,主线程退出后,守护线程也退出了不再打印。
ps:setDeamon()必须设置在线程start方法启动之前,不然会抛出异常。
网友评论