您的位置:首页 > 其它

守护线程

2016-02-01 14:55 232 查看
守护线程与用户线程的区别只在于线程结束的时机。

执行以下代码,你会发现虽然daemonThread线程内部定义了一个死循环,但整个程序任然会在userThread执行完成之后不久自动退出。

public class Example6 {

public static void main(String[] args) {
final Thread userThread = new Thread(new Runnable() {

@Override
public void run() {
for (int i = 0; i < 100; i++) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
userThread.start();

Thread daemonThread = new Thread(new Runnable() {
@Override
public void run() {
while (true) {
System.out.println("用户线程是否alive:"+userThread.isAlive());
}
}
});
daemonThread.setDaemon(true);//设置为守护线程
daemonThread.start();
}
}


守护线程:守护线程则是用来服务用户线程的,如果没有其他用户线程在运行,那么就没有可服务对象,也就没有理由继续下去(即,当JVM中所有的线程都是守护线程的时候, JVM就可以退出了)。 垃圾回收线程也是守护线程。

public class Example6 {

public static void main(String[] args) {
Thread daemonThread = new Thread(new Runnable() {
@Override
public void run() {
while (true) {}
}
});
daemonThread.setDaemon(true);//设置为守护线程
daemonThread.start();

for (int i = 0; i < 100; i++) {
try {
Thread.sleep(200);
System.out.println(daemonThread.isAlive());
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: