守护线程(Daemon)

守护线程是程序运行时,后台提供的一种通用服务的线程。

Java线程分为两种:用户线程(非守护线程)、守护线程

用户线程和守护线程本质上没什么区别,唯一的区别在于JVM的退出,如果用户线程全部退出运行。不管是否存在守护线程,JVM都会退出,因为即使存在守护线程,他也没有可守护的用户线程了。垃圾回收线程是典型的守护线程,当JVM开始运行的时候,垃圾回收线程就一直在后台默默守护,对JVM执行过程中产生的垃圾进行回收,当没有任何运行的用户线程时,垃圾回收线程也没有可回收的垃圾了,这时JVM也退出了。

代码测试示例:

package cn.com.demo;

/**
 * @Author: Peacock__
 * @Date: 2019/4/22 10:44
 */
public class DemoThread extends Thread {

    @Override
    public void run() {
        try {
            System.out.println("Thread开始执行");
            Thread.sleep(10_000);
            System.out.println("Thread执行完毕");
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

情景一:不设置t为守护线程,默认非守护线程

public static void main(String[] args) {

        DemoThread t = new DemoThread();

        //开启t线程
        t.start();

        //输出main线程的名字
        System.out.println(Thread.currentThread().getName());
    }

情景二:设置t为守护线程

public static void main(String[] args) {

        DemoThread t = new DemoThread();

        //设置t为守护线程
        t.setDaemon(true);
        //开启t线程
        t.start();

        //输出main线程的名字
        System.out.println(Thread.currentThread().getName());
    }

 

知识点:

1.通过线程.setDaemon(true);设置线程为守护线程。

2.Daemon线程里创建的线程也是Daemon线程。用户线程同样。

3.守护线程与系统“同生共死”

4.程序中全部用户线程执行完毕后JVM直接退出,无需关注是否还存在守护线程。

5.守护线程优先级低

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值