例子如下
package MyThread;
import java.io.IOException;
public class DaemonTest extends Thread {
public DaemonTest() {
super("Wcb");
}
/**
* 守护线程的run方法,它将和其他线程同时运行
*/
public void run() {
for (int i = 1; i <= 40; i++) {
try {
Thread.sleep(10000);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
System.out.println("TestThread: " + Thread.currentThread().getName() + i);
}
}
/**
* 主线程就是被守护的线程 守护线程跟普通线程的区别在于,普通线程一旦开了,就要他自己执行完才会结束
* 守护线程是JVM中没有常规线程的时候,他就会马上关闭(马上关闭的意思就是不管你执行到哪,都会马上关闭,不会等你执行完再关闭,所以不要在守护线程里写一些业务代码)
*/
public static void main(String[] args) {
DaemonTest test = new DaemonTest();
test.setDaemon(true);
test.start();
try {
/*
* 这里就是模拟,假如说我一直没输入,也就是说主线程一直存在,则守护线程就会一直存在,如果我输入了,主线程已经执行结束了
* 则守护线程也会被关闭,在这里主线程就是被守护的线程
*/
System.in.read(); // 接受输入,使程序在此停顿,一旦接收到用户输入,main线程结束,守护线程自动结束
} catch (IOException ex) {
ex.printStackTrace();
}
}
}