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

守护线程详解_线程池任务队列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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • SpringBoot重点详解–使用Druid+Jpa

    SpringBoot重点详解–使用Druid+Jpa目录Druid简介添加依赖与配置配置数据源配置Druid监控统计功能方式一(基于Servlet3.0注解的配置)方式二(基于Spring注解的配置)配置JPA应用测试Druid简介Druid是阿里巴巴开源的数据库连接池,号称是Java语言中最好的数据库连接池,能够提供强大的监控和扩展功能。GitHub地址:https://github.com/al…

    2022年7月23日
    27
  • java定时器实例_Java定时器小实例

    java定时器实例_Java定时器小实例有时候,我们需要在Java中定义一个定时器来轮询操作,比如每隔一段时间查询、删除数据库中的某些数据等,下面记录一下一种简单实现方式1,首先新建一个类,类中编写方法来实现业务操作publicclassMailQuartz{@AutowiredprivateMailServiceImplsendMail;@AutowiredprivateTimerServiceImpltimerService…

    2022年9月18日
    5
  • Java多线程死锁问题

    Java多线程死锁问题死锁这么重要,请仔细阅读死锁问题死锁定义死锁举例如何排查死锁死锁发生的条件怎么解决死锁问题?线程通讯机制(wait/notify/notifyAll)LockSupport死锁问题死锁定义多线程编程中,因为抢占资源造成了线程无限等待的情况,此情况称为死锁。死锁举例注意:线程和锁的关系是:一个线程可以拥有多把锁,一个锁只能被一个线程拥有。当两个线程分别拥有一把各自的锁之后,又尝试去获取对方的锁,这样就会导致死锁情况的发生,具体先看下面代码:/***线程死锁问题*/public

    2022年7月13日
    13
  • ubuntu配置opencv环境_opencv的安装与配置详细教程

    ubuntu配置opencv环境_opencv的安装与配置详细教程目录一、安装opencv(1)下载opencv-3.4.15数据包(2)解压缩包(3)使用cmake安装opencv​​(4)配置环境(5)检验二、实例使用(1)打开图片(2)打开摄像头显示处理视频(3)录制视频三、总结四、参考文献一、安装opencv(1)下载opencv-3.4.15数据包打开浏览器,进入下载地址ReleaseOpenCV3.4.15·opencv/opencv·GitHub,选择Source..

    2022年9月28日
    2
  • asp:DropDownList 的一些属性

    asp:DropDownList 的一些属性使用 BorderStyle 属性为Web服务器控件指定边框样式。 使用一个 BorderStyle 枚举值设置此属性。 下表列出了可能的值。边框样式说明NotSet不设置边框样式。None无边框Dotted虚线边框。

    2022年10月17日
    4
  • oracle数据库建表语句大全_sql server建表语句

    oracle数据库建表语句大全_sql server建表语句Oracle数据库建表语句#1.建表语句createtableCUST_INFO(CUST_IDVARCHAR(36)notnull,CUST_TYPEVARCHAR(50),CUST_NAMEVARCHAR(200),ID_NO…

    2025年10月8日
    2

发表回复

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

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