首页 > 编程语言 > 详细

守护线程

时间:2016-02-01 17:56:50      阅读:164      评论:0      收藏:0      [点我收藏+]

守护线程与用户线程的区别只在于线程结束的时机。

执行以下代码,你会发现虽然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();
            }
        }
    }
}

 

守护线程

原文:http://www.cnblogs.com/barker/p/5175362.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!