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 的实例中的信息未执行完毕。




posted on 2011-11-09 22:39  死写代码的  阅读(1144)  评论(0)    收藏  举报

导航