美文网首页Java 杂谈
关于守护线程

关于守护线程

作者: LandHu | 来源:发表于2018-08-01 22:57 被阅读58次

守护线程Demo

在Java中有两种线程:一种是普通线程,另一种是守护线程

守护线程:顾名思义就是守护的线程,它是为非守护线程服务的线程。

JVM虚拟机正常退出的时机就是系统中不存在非守护线程的时候,也就是说系统中不存在普通线程时虚拟机退出而不管守护线程是否还在运行

生活场景举例:普通线程相当于是主人,守护线程就是保姆,保姆是为了主人服务的。当主人都挂了,那么保姆可以存在也可以不存在

来一道面试题:一个主线程,三个子线程,9个守护线程,他们停止的顺序时什么?
答:我们理解了上面讲的虚拟机退出时机再结合生活场景的例子,很容易就能搞明白这个问题!主线程相当于家庭、子线程相当于主人、守护线程相当于保姆或者是奴才,那么当我们的主人挂了,保姆可能还要继续打扫房子,但是房子也坏了消失了,那么保姆或奴才也就没必要存在了。所以说守护线程是最后才会停止的。那么主线程和子线程是谁先停止呢?这个其实很简单,我们想想,在一个main方法中启动一个线程打印一条语句,那么只有当这个线程停止之后,控制台的那个红色框才会置灰,也就是说main线程才会死亡。那么这个问题的答案就是:子、主、守护

手动敲个主线程和守护线程代码:

public class DaemonThreadDemo {
    public static void main(String[] args) throws InterruptedException {
        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.sleep(1000);
        System.out.println(Thread.currentThread().getName() + "主线程结束");

    }
}
class ClildThread implements Runnable {
    @Override
    public void run() {
        while (true) {
            System.out.println("I’m child thread..");
            try {
                TimeUnit.MILLISECONDS.sleep(100);
                //Thread.sleep(100);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
参考:https://blog.csdn.net/jianguo6/article/details/80480762

技术讨论 & 疑问建议 & 个人博客

版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议,转载请注明出处!

相关文章

  • Java并发编程 - 用户线程和守护线程

    用户线程和守护线程 Stackoverflow中关于守护线程有如下比较好的解释: Daemon threads a...

  • 关于守护线程

    守护线程Demo 在Java中有两种线程:一种是普通线程,另一种是守护线程 守护线程:顾名思义就是守护的线程,它是...

  • 线程知识点复习(一)

    守护线程与非守护线程: java中有两条线程:1.守护线程,2.非守护线程(用户线程)守护线程与main主线程同时...

  • 2018-09-19 守护线程与非守护线程

    什么是守护线程、非守护线程? 什么是守护线程,和main有关。 用户线程(非守护线程): 守护线程,有一个特征,和...

  • Java多线程之<<守护线程>>实战

    定义 什么是守护线程?与守护线程相对应的就是用户线程,守护线程就是守护用户线程,当用户线程全部执行完结束之后,守护...

  • 什么是守护线程

    守护线程定义与守护线程相对应就是用户线程,用户线程可以理解为系统工作的线程,而守护线程守护的就是用户线程。当用户线...

  • Java多线程 - 第二章

    守护线程 Java的线程分为两种:User Thread(用户线程)、DaemonThread(守护线程) 守护线...

  • java线程分类

    守护线程 java中有两类线程,用户线程(User Thread)和守护线程(Daemon Thread)。 守护...

  • java——多线程讲解三

    java多线程的补充:守护线程(后台线程)守护线程:在一个进程中如果只剩下了守护线程,那么守护线程也会死亡。任何一...

  • 守护线程

    守护线程 什么是守护线程? 守护线程:一种特殊的线程,驻守在线程后台,完成系统性的工作,当启动守护线程的线程结束时...

网友评论

    本文标题:关于守护线程

    本文链接:https://www.haomeiwen.com/subject/cxydvftx.html