java线程:守护线程
守护线程与普通线程写法的区别在于,在线程执行前,调用线程对象的方法setDaemon(true)。
当开始守护线程的主线程退出时,守护线程自动退出。举例来说,JVM的垃圾回收、内存管理等线程都是主线程的守护线程。
package test;
public class ThreadTest {
public static void main(String[] args) {
Thread t1 = new MyCommon();
// Thread t2 = new Thread(new MyDaemon());
// t2.setDaemon(true); //设置为守护线程
// t2.start();
t1.start();
}
}
class MyCommon extends Thread {
public void run() {
Thread t2 = new Thread(new MyDaemon());
t2.setDaemon(true); //设置为守护线程
t2.start();
for (int i = 0; i < 5; i++) {
System.out.println("线程1第" + i + "次执行!");
try {
Thread.sleep(7);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
class MyDaemon implements Runnable {
public void run() {
for (int i = 0; i < 30; i++) {
System.out.println("后台线程第" + i + "次执行!");
try {
Thread.sleep(7);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
执行结果:
线程1第0次执行!
后台线程第0次执行!
后台线程第1次执行!
线程1第1次执行!
后台线程第2次执行!
线程1第2次执行!
后台线程第3次执行!
线程1第3次执行!
后台线程第4次执行!
线程1第4次执行!
后台线程第5次执行!
后台线程第6次执行!
后台线程第7次执行!
后台线程第8次执行!
后台线程第9次执行!
后台线程第10次执行!
可见守护线程MyDaemon 的实例中的信息未执行完毕。
浙公网安备 33010602011771号