黑马程序员技术交流社区

标题: Daemon线程与一般线程的差别 [打印本页]

作者: 杨长川    时间: 2013-3-23 14:45
标题: Daemon线程与一般线程的差别
本帖最后由 杨长川 于 2013-3-23 21:56 编辑

如题,Daemon线程 没怎么看懂,它与一般的线程差别到底有哪些??
package onlyfun.caterpillar;

public class DaemonThread {
    public static void main(String[] args) {

        Thread thread = new Thread(
        // 这是匿名类的写法
            new Runnable() {
                public void run() {
                    while(true) {
                        System.out.print("T");
                    }
                }        
            });
        // 设定为Daemon线程
        thread.setDaemon(true);
        thread.start();
    }
}

作者: 黑马朱超    时间: 2013-3-23 15:04
setDaemon(true);平时和前台线程抢资源,但是当所有的前台线程结束后,后台线程(守护线程)自动结束。JVM虚拟机退出

使用在要守护线程运行之前。

public static void main(String[] args)

{

......

ti.setDaemon(true);//声明是守护线程

t2.setDaemon(true);

t1.start();//守护线程启动并运行

t2.start();

}

形象点比喻,前台线程和守护线程共同在拍电影,前台线程就相当于演员,守护线程就是给前台线程提供灯光支持。
演员演完了,灯光就可以灭了。
守护线程运行的理由是因为前台线程运行着,像个仆人。主人干什么,他就干什么。
作者: 秦久启    时间: 2013-3-23 16:15
简单的说就是,后台线程的特点就是:开启后和前台线程共同抢夺cup执行权运行,开启和运行都是没有区别的,当所有的前台线程都结束后,后台线程就会自动结束。后台线程也叫守护线程或用户线程,setDaemon()方法必须在启动线程前调用!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2