守护线程

  线程我们分为 用户线程和守护线程,二者的区别在于:虚拟机需要等用户线程执行完毕才停止,而不需要等待守护线程执行完毕。
  举一个简单的例子来说就是,如果你的用户线程是一个有限的循环,而守护线程是一个无线的循环,那么当我们的用户线程执行完毕之后程序就会结束,并不会因为守护线程是无线循环而导致程序不会结束。所以一般守护线程用来监控内存、垃圾回收、后台记录操作等。

守护线程

正常的线程都是用户线程,守护线程我们需要调用 setDaemon(boolean on) 方法 来把正常线程变为守护线程,参数为 true 的时候是守护线程。

实例分析

例:我们的生命不过 30000 天,而上帝是永恒的,上帝一直在守护我们。当我们逝去的时候上帝就不再呼守护我们了,那么我们用代码来实现这个例子:

public class DaemonTest {
    public static void main(String[] args) {
        Person person = new Person();
        God god = new God();
        //把上帝设置为守护线程
        Thread thread = new Thread(god);
        thread.setDaemon(true);

        thread.start();//空气守护线程启动
        new Thread(person).start();
    }
}
//上帝
class God implements Runnable {
    @Override
    public void run() {
        while (true) {
            System.out.println("上帝守护你");
        }
    }
}
//人类
class Person implements Runnable {
    @Override
    public void run() {
        for (int i = 1; i <= 30000; i++) {
            System.out.println("我们开心的活着");
        }
        System.out.println("=======Game Over=======");
    }
}

上面代码运行的结果为

在这里插入图片描述
上面运行表示结束了,虽然上帝线程是一个无线循环,但是因为设置为了守护线程,所以当用户线程执行完毕后,守护线程也结束了。因为关闭虚拟机需要时间,所以上帝线程又执行了一段时间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值