JAVA多线程之守护线程

1. 守护线程

守护线程是比较特殊特殊的线程,能够自动结束生命周期的特性。
GC就是一个守护线程,如果主程序已经结束,但是GC还在运行
在游戏中,有多个线程,计算角色金钱,经验如果是是一个非守护线程的话,角色已经下线,而线程还在运行,经验,金钱不断增加,游戏会有很大的bug.
设置守护线程的方法为setDaemon(true),需要在线程启动前进行设置为守护线程。
例子:

package com.mxli.concurrent;

public class ConditionDemo {
    public static void main(String[] args) throws InterruptedException {
        Thread t=new Thread(){
            @Override
            public void run() {
                try {
                    Thread.sleep(10000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println("守护线程");
            }
        };

        t.setDaemon(false);
        t.start();
        Thread.sleep(10);
        System.out.println(Thread.currentThread().getName()+"finished");



    }


}
运行结果为:
mainfinished
守护线程
如果t为非守护线程、则main线程退出后、则t还在执行

如果把t.setDaemon(true)后,

package com.mxli.concurrent;

public class ConditionDemo {
    public static void main(String[] args) throws InterruptedException {
        Thread t=new Thread(){
            @Override
            public void run() {
                try {
                    Thread.sleep(10000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println("守护线程");
            }
        };

        t.setDaemon(true);
        t.start();
        Thread.sleep(10);
        System.out.println(Thread.currentThread().getName()+"finished");



    }


}
执行结果为:mainfinished
守护线程则不在输出,意味着主线程已经退出JVM,通过以上两个例子可以说明,守护线程能够结束生命周期的特性。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值