守护线程

1.线程分类

用户线程:用户线程没有运行完成,程序就不会退出。

守护线程:任何一个守护线程都是整个程序中所有用户线程的守护者,守护线程会跟随用户线程活着,如果最后一个用户线程运行完成,守护线程就会跟着最后一个用户线程一起结束。

守护线程的用处?

jvm垃圾清理线程

一个简单的守护线程Demo

public class DaemonDemo implements Runnable{
    @Override
    public void run() {
        while (true) {
            try {
                System.out.println(Thread.currentThread().getName());
                Thread.sleep(1000l);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

    public static void main(String[] args) throws InterruptedException{
        Thread thread = new Thread(new DaemonDemo(),"守护线程测试线程");
        /**
         * setDaemon(true)一定要写在 start()之前,
         * 否则会报错“java.lang.IllegalThreadStateException”
         * 并且 thread 会作为用户线程执行
         */
        thread.setDaemon(true);
        thread.start();
        thread.sleep(2000l);
    }

运行结果

守护线程测试线程
守护线程测试线程
守护线程测试线程

如果将thread.setDaemon(true);放到start()后面,运行结果为:

守护线程测试线程
Exception in thread "main" java.lang.IllegalThreadStateException
	at java.lang.Thread.setDaemon(Thread.java:1359)
	at threadTest.DaemonDemo.main(DaemonDemo.java:20)
守护线程测试线程
守护线程测试线程
守护线程测试线程

守护线程在日常并不常用,因为它是不可控的,不要在守护线程中进行读写操作,执行计算逻辑。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值