• 什么是守护线程?


    什么是守护线程?

    •   守护线程的唯一用途 是为其他线程提供服务。计时线程就是一个例子,它定时地发送“ 计时器嘀嗒” 信号给其他 线程或清空过时的高速缓存项的线程。当只剩下守护线程时, 虚拟机就退出了,由于如果只 剩下守护线程, 就没必要继续运行程序了。 
    •   守护线程有时会被初学者错误地使用, 他们不打算考虑关机(shutdown) 动作。但是, 这是很危险的。守护线程应该永远不去访问固有资源, 如文件、 数据库,因为它会在任何时 候甚至在一个操作的中间发生中断。
    •   在Java语言中,守护线程一般具有较低的优先级,它并非只由JVM内部提供,用户在编写程序时也可以自己设置守护线程,例如将一个用户线程设置为守护线程的方法就是在调用start()方法启动线程之前调用对象的setDaemon(true)方法,若将以上括号里的参数设置为false,则表示的是用户进程模式。   
    •   需要注意的是,当在一个守护线程中产生了其它线程,那么这些新产生的线程默认还是守护线程,用户线程也是如此。

    测试代码

    package com.javaBase.LineDistance;
    
    /**
     * 〈一句话功能简述〉;
     * 〈多线程测试代码〉
     *
     * @author jxx()
     * @see [相关类/方法](可选)
     * @since [产品/模块版本] (可选)
     */
    public class testLine {
    
        public static void main(String[] args){
            Thread t = new Thread(new Runnable() {
                @Override
                public void run() {
                    System.err.println("t 线程执行完毕。");
                }
            });
            Thread guardT = new Thread(new Runnable() {
                @Override
                public void run() {
                    while(true) {
                        System.out.println("守护线程正在执行...");
                    }
                }
            });
            guardT.setDaemon(true);
            guardT.start();
            t.start();
        }
    }

    运行结果:

    D:jdk1.7injava "-javaagent:D:JetBrainsIntelliJ IDEA 2017.1.3libidea_rt.jar=57757:D:JetBrainsIntelliJ IDEA 2017.1.3in" -Dfile.encoding=UTF-8 -classpath D:jdk1.7jrelibcharsets.jar;D:jdk1.7jrelibdeploy.jar;D:jdk1.7jrelibextaccess-bridge-64.jar;D:jdk1.7jrelibextdnsns.jar;D:jdk1.7jrelibextjaccess.jar;D:jdk1.7jrelibextlocaledata.jar;D:jdk1.7jrelibextservlet-api.jar;D:jdk1.7jrelibextsunec.jar;D:jdk1.7jrelibextsunjce_provider.jar;D:jdk1.7jrelibextsunmscapi.jar;D:jdk1.7jrelibextzipfs.jar;D:jdk1.7jrelibjavaws.jar;D:jdk1.7jrelibjce.jar;D:jdk1.7jrelibjfr.jar;D:jdk1.7jrelibjfxrt.jar;D:jdk1.7jrelibjsse.jar;D:jdk1.7jrelibmanagement-agent.jar;D:jdk1.7jrelibplugin.jar;D:jdk1.7jrelib
    esources.jar;D:jdk1.7jrelib
    t.jar;E:jxxProjectoutproductionjxxProject;E:
    epository
    etsfjson-lib;E:
    epository
    etsfjson-libjson-lib2.4json-lib-2.4.jar;E:
    epositorycomalibabafastjson1.1.46.sec01fastjson-1.1.46.sec01.jar com.javaBase.LineDistance.testLine
    t 线程执行完毕。
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    守护线程正在执行...
    
    Process finished with exit code 0

    可见,当程序非守护线程都执行完毕后,守护线程也会直接退出。

      

  • 相关阅读:
    北京清北 综合强化班 Day1
    Noip2015 提高组 Day1
    Noip2016 提高组 Day2 T1 组合数问题
    2017.9.23 NOIP2017 金秋杯系列模拟赛 day1 T1
    [51NOD1103] N的倍数(鸽笼原理)
    [51NOD1420] 数袋鼠好有趣(贪心)
    [CF808A] Lucky Year(规律)
    [CF808B] Average Sleep Time([强行]树状数组,数学)
    [CF808C] Tea Party(贪心)
    [CF808D] Array Division(暴力,枚举)
  • 原文地址:https://www.cnblogs.com/jxxblogs/p/11646094.html
Copyright © 2020-2023  润新知