python开两个守护线程_hdfs守护线程

python开两个守护线程_hdfs守护线程**守护线程**是区别于用户线程哈,**用户线程**即我们手动创建的线程,而守护线程是程序运行的时候在后台提供一种**通用服务的线程**。垃圾回收线程就是典型的守护线程。

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

Jetbrains全系列IDE稳定放心使用

守护线程是区别于用户线程,用户线程即我们手动创建的线程,而守护线程是程序运行的时候在后台提供一种通用服务的线程。垃圾回收线程就是典型的守护线程。

守护线程和非守护线程的区别是

    public static void main(String[] args) throws InterruptedException { 
   
        Thread t1 = new Thread(()-> { 
   
                while (true) { 
   
                    try { 
   
                        Thread.sleep(1000);
                        System.out.println("我是子线程(用户线程.I am running");
                    } catch (Exception e) { 
   
                    }
                }
        });
        //标记为守护线程
        t1.setDaemon(true);
        //启动线程
        t1.start();

        Thread.sleep(3000);
        System.out.println("主线程执行完毕...");
    }

执行结果

python开两个守护线程_hdfs守护线程

可以发现标记为守护线程后,主线程销毁停止,守护线程一起销毁。我们再看下,去掉 t1.setDaemon(true)守护标记的效果:

python开两个守护线程_hdfs守护线程

所以,当主线程退出时,JVM 也跟着退出运行,守护线程同时也会被回收,即使是死循环。如果是用户线程,它会一直停在死循环跑。这就是守护线程和非守护线程的区别

守护线程拥有自动结束自己生命周期的特性,非守护线程却没有。如果垃圾回收线程是非守护线程,当JVM 要退出时,由于垃圾回收线程还在运行着,导致程序无法退出,这就很尴尬。这就是为什么垃圾回收线程需要是守护线程

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

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

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


相关推荐

  • laravel 中使用tinker 验证驱动加载是否成功

    laravel 中使用tinker 验证驱动加载是否成功

    2021年10月26日
    52
  • QTreeWidget 获取被双击的子项的层次路径

    QTreeWidget 获取被双击的子项的层次路径

    2021年9月7日
    172
  • 课程设计题七:交通灯控制器[通俗易懂]

    课程设计题七:交通灯控制器[通俗易懂]要求:1、红灯和绿灯相互转换时经过黄灯,黄灯闪烁三次(6秒);2、主干道方向通行30秒,辅干道方向通行20秒,单独左转信号15秒;先直行信号,后左转信号。3、设手动、自动、特殊情况三种方式。4、特殊情况时所有路口红灯都亮,给120、110等通行。5、自动时显示各种状态倒计时。获取该程序+protues的方式:1、CSDN下载:https://download.c…

    2022年4月19日
    61
  • 在HTML中添加背景音乐[通俗易懂]

    在HTML中添加背景音乐[通俗易懂]方法一:在源代码中编写以下几句代码将能实现在HTML网页内添加背景音乐; 你的浏览器版本太低,不支持audi

    2022年7月25日
    8
  • ubuntu完全卸载CUDA

    ubuntu完全卸载CUDACUDA的卸载方法网上都有很多,但是几乎都是错的,我在卸载cuda时基本试了个遍,各种踩坑。能查到的方法一般都是从官方文档搬过来的,然而这种方法并不能将cuda完全卸掉。这里把官方文档的方法贴出来:sudoapt-get–purgeremove”*cublas*””*cufft*””*curand*”\”*cusolver*””*cusparse*””*npp*””*nvjpeg*””cuda*””nsight*”我运行过这个命令,运行完之后,命令行输入nvcc-

    2022年5月30日
    77
  • MyBatis 所有的 jdbcType类型

    MyBatis 所有的 jdbcType类型MyBatis处理MySQL字段类型date与datetime1)DATETIME显示格式:yyyy-MM-ddHH:mm:ss时间范围:[‘1000-01-0100:00:00’到’9999-12-3123:59:59’]2)DATE显示格式:yyyy-MM-dd时间范围:[‘1000-01-01’到’9999-12-31’]3)TIMESTAMP显示格式:yyyy-MM-ddHH:mm:ss时间范围:[‘1970-01-0100:00:00’到’2037-12-

    2022年10月20日
    5

发表回复

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

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