zoukankan      html  css  js  c++  java
  • 关于守护线程的知识

    守护线程有一个应用场景,就是当主线程结束时,结束其余的子线程(守护线程)自动关闭,就免去了还要继续关闭子线程的麻烦。不过博主推荐,如果真有这种场景,还是用中断的方式实现比较合理。

    还有补充一点,不是说当子线程是守护线程,主线程结束,子线程就跟着结束,这里的前提条件是:当前jvm应用实例中没有用户线程继续执行,如果有其他用户线程继续执行,那么后台线程不会中断,如下:

      

    public class DaemonThreadTest
    {
        public static void main(String[] args)
        {
            Thread mainThread = new Thread(new Runnable(){
                @Override
                public void run()
                {
                    Thread childThread = new Thread(new ClildThread());
                    childThread.setDaemon(true);
                    childThread.start();
                    System.out.println("I'm main thread...");
                }
            });
            mainThread.start();
            
            Thread otherThread = new Thread(new Runnable(){
                @Override
                public void run()
                {
                    while(true)
                    {
                        System.out.println("I'm other user thread...");
                        try
                        {
                            TimeUnit.MILLISECONDS.sleep(1000);
                        }
                        catch (InterruptedException e)
                        {
                            e.printStackTrace();
                        }
                    }
                }
            });
            otherThread.start();如果把这句注释掉,JVM执行完就会退出
        }
    }
     
    class ClildThread implements Runnable
    {
        @Override
        public void run()
        {
            while(true)
            {
                System.out.println("I'm child thread..");
                try
                {
                    TimeUnit.MILLISECONDS.sleep(1000);
                }
                catch (InterruptedException e)
                {
                    e.printStackTrace();
                }
            }
        }
    }

      我试了,确实守护线程在一直跑。说明守护线程跟启动它的线程没有关系,而是整个JVM还存不存在用户线程。

  • 相关阅读:
    14-定时器
    13-JS中的面向对象
    12-关于DOM操作的相关案例
    11-DOM介绍
    10-关于DOM的事件操作
    09-伪数组 arguments
    08-函数
    07-常用内置对象
    06-流程控制
    05-数据类型转换
  • 原文地址:https://www.cnblogs.com/juniorMa/p/14239699.html
Copyright © 2011-2022 走看看