Thread 之守护线程

先来看看下面这个例子:

class Test extends Thread {

        @Override public void run() {

                setName("thread");

                try {

                        sleep(200);

                } catch (InterruptedException e) {

                        e.printStackTrace();

                }

                System.out.println(Thread.currentThread().getName());

        }

        public static void main(String[] args) {

                Thread thread = new Test();

                thread.setDaemon(true); // 设置为守护线程

                thread.run();

                thread.start();

        }

}

结果是只打印 main:

结果

这是因为当所有常规线程运行完毕以后,守护线程不管运行到哪里,虚拟机都会退出运行。

通过 thread 实例调用 run 方法的行为是在 main 中进行的,这里为主线程,所以打印 main;之后调用 start 方法启动线程执行 run 时,main 已经执行完毕,而该线程为守护线程,虚拟机不必等待线程执行完就已经退出了,所以不会打印 thread。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。