Java 守护线程是什么?

在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程) 

定义:守护线程--也称“服务线程”,在没有用户线程可服务时会自动离开。

优先级:守护线程的优先级比较低,用于为系统中的其它对象和线程提供服务。

设置:通过setDaemon(true)来设置线程为“守护线程”;将一个用户线程设置为

守护线程的方式是在 线程对象创建 之前 用线程对象的setDaemon方法。

example: 垃圾回收线程就是一个经典的守护线程,当我们的程序中不再有任何运行的

Thread,程序就不会再产生垃圾,垃圾回收器也就无事可做,所以当垃圾回收线程是

JVM上仅剩的线程时,垃圾回收线程会自动离开。它始终在低级别的状态中运行,用于

实时监控和管理系统中的可回收资源。

生命周期:守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且

周期性地执行某种任务或等待处理某些发生的事件。也就是

说守护线程不依赖于终端,但是依赖于系统,与系统“同生共死”。那Java的守护线程是

什么样子的呢。当JVM中所有的线程都是守护线程的时候,JVM就可以退出了;如果还有一个

或以上的非守护线程则JVM不会退出。

实例代码

public class Daemon {

    public static void main(String[] args) {

        Thread thread=new Thread(new Runnable() {

            @Override

            public void run() {

                for (int i=0;i<10;i++){

                    try {

                        Thread.sleep(300);

                    } catch (InterruptedException e) {

                        e.printStackTrace();

                    }

                    System.out.println("子线程"+i);

                }

            }

        });

        thread.start();

        for (int i=0;i<4;i++){

            System.out.println("主线程"+Thread.currentThread().getName());

        }

        System.out.println("主线程执行完毕");

    }

}

总结:守护线程类似于gc线程随着主线程的关闭而关闭,但不影响用户线程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值