守护线程详解_线程池任务队列

守护线程详解_线程池任务队列packagecom.lastinglate.concurrency.chapter4;publicclassDaemonThread{publicstaticvoidmain(String[]args)throwsInterruptedException{Threadt=newThread(){@Overridepublicvoidrun(){t

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

package com.lastinglate.concurrency.chapter4;

public class DaemonThread { 
   

    public static void main(String[] args) throws InterruptedException { 
   

        Thread t = new Thread() { 
   

            @Override
            public void run() { 
   
                try { 
   
                    System.out.println(Thread.currentThread().getName() + " running");
                    Thread.sleep(100_000);
                    System.out.println(Thread.currentThread().getName() + " done.");
                } catch (InterruptedException e) { 
   
                    e.printStackTrace();
                }
            }
        }; //new
      	t.setDaemon(true); // 必须放置在start之前
        t.start();


        Thread.sleep(5_000);   //JDK1.7
        System.out.println(Thread.currentThread().getName());
        // 如果未设置t.setDaemon(true);应用程序不会在5s退出,而是在100s之后才退出,因为main线程虽然不在了,但非守护线程Thread-0线程还在。
    }
}
t.setDaemon(true);

将线程T设置为守护线程,因为线程T为main线程创建(new出来),所以T线程为main的守护线程。
main线程生命周期结束之后,由main创建的守护线程T生命周期也跟着结束。

由谁创建线程,谁就是父线程,被创建的出来的线程就是子线程。setDaemon后,被创建的线程就是其父线程的守护线程,所以守护线程是子线程。

比如说,main线程创建了T线程,main线程就是父线程,T就是子线程,t.setDaemon(true)就是设置T线程(子线程)为main线程(父线程)的守护线程

用途:建立网络连接

守护线程(子线程)用于保持网络心跳,业务线程(父线程)用于进行业务处理,当业务线程退出,进行心跳的守护线程也退出。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/183862.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • CTK框架使用

    CTK框架使用基于Qt的CTK框架的使用QT的plugin插件的创建方式在介绍CTK框架的使用方法之前我们首先介绍一下QT的plugin插件的创建方式。QT提供两种API来创建插件:扩展Qt库本身的高级API。例如:定制databasedrivers,imageformats,textcodecs,customstyles,etc.扩展应用程序的低级API如果你像创建一个可以在QtDes

    2022年6月6日
    153
  • 观察者模式observer不适用于_观察者模式是什么

    观察者模式observer不适用于_观察者模式是什么观察者模式Obeserver动机模式定义实例结构图要点总结笔记动机在软件构建过程中,我们需要为某些对象建立 一种“通知依赖关系” —-一个对象发(目标对象)的状态发生改变,所有依赖的对象(观察者对象)都将很好的得到通知。如果这样的依赖关系过于紧密。将使软件不能很好的抵御变化使用面向对象技术 可以将这种依赖关系弱化,并形成一种稳定的依赖关系。从而实现软件体系结构的松耦合。模式定义定义对象间的一种一对多(变化)的依赖关系,以便当一个对象(subject)的状态发生改变时,所有依赖于它的对象都得到通

    2022年8月11日
    6
  • Hive 时间日期处理总结

    Hive 时间日期处理总结

    2021年11月26日
    47
  • JavaScript与Java的关系(联系与区别)

    JavaScript与Java的关系(联系与区别)JavaScript和Java是两种不一样的语言,但是它们之间存在联系。背景方面Javascript(1995年,Netscape公司雇佣了程序员BrendanEich开发这种网页脚本语言)最初名字叫做Mocha,1995年9月改为LiveScript。12月,Netscape公司与Sun公司(Java语言的发明者和所有者)达成协议,后者允许将这种语言叫做JavaScript。这样一来,Netsc

    2022年7月7日
    21
  • 什么是重载什么是覆盖_java覆盖和重载的关系

    什么是重载什么是覆盖_java覆盖和重载的关系java中的方法重载发生在同一个类里面两个或者多个方法的方法名相同但是参数不同的情况。与此相对,方法覆盖是说子类重新定义了父类的方法。方法覆盖必须有相同的方法名,参数列表和返回类型。覆盖者可能不会限

    2022年8月2日
    7
  • Flutter BaseWidget 实现onResume、onPause()

    Flutter BaseWidget 实现onResume、onPause()最近用Flutter开发的项目算是完成了开发到上线第一阶段了。任何一个项目开始了,若想追求的是更好,那么就需要下功夫对项目用户体验和代码效率深入的研究了。作为用户和产品经理、老板、UI、不懂技术的其他人员看到的产品只是表面的。…

    2022年5月5日
    145

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号