注册 登录
编程论坛 JAVA论坛

Daemon线程?

yu1543054075 发布于 2015-06-08 19:57, 331 次点击
public class ThreadA {
    public static void main(String[] args) {
        System.out.println("ThreadA执行:");
        
        Thread threadB = new Thread(new Runnable() {
            public void run() {
                try {
                    System.out.println("ThreadB开始:");
                    for (int i = 0; i < 5; i++ ) {
                        Thread.sleep(1000);
                        System.out.println("ThreadB执行..");
                    }
                    System.out.println("ThreadB即将结束..");
                }
                catch(InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
        );
        threadB.setDaemon(true);//设置为Daemon线程
        threadB.start();
        System.out.println("ThreadA执行");
    }
}
//
//C:\Users\Administrator\Desktop\classes>java ThreadA
//ThreadA执行
//ThreadA执行
//ThreadB开始
为什么不是ThreadA执行
          ThreadB开始
          ThreadA执行
求指导!!
1 回复
#2
秦时的明月夜2015-06-09 15:56
main函数 也是一个主线程的 Daemon 和普通的线程没什么区别,他结束的周期依赖于系统,也就是说如果主线程结束了,那么daemon服务线程也结束了……
程序代码:
public class ThreadA {
    public static void main(String[] args) throws InterruptedException {
        System.out.println("ThreadA执行:");
        Thread threadB = new Thread(new Runnable() {
            public void run() {
                try {
                    System.out.println("ThreadB开始:");
                    for (int i = 0; i < 100; i++ ) {
                        Thread.sleep(200);
                        System.out.println("ThreadB执行.."+i);
                    }
                    System.out.println("ThreadB即将结束..");
                }
                catch(InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
        );
        threadB.setDaemon(true);//设置为Daemon线程
        threadB.start();
        for (int i = 0; i <5; i++) {
            Thread.sleep(200);
            System.out.println("ThreadA执行==============");
        }
    }
1