控制线程--后台线程

       我们上一篇讲了join线程,这一篇我们主要来了解一下后台线程。后台线程主要是为其他线程提供服务,如果前台线程都死亡,后台线程会自动死亡,JVM的来及回收机制就是典型的后台线程,下面我们来看看实例。
public class DaemonTest extends Thread{
    public void run(){
        for(int i=0;i<1000;i++){
            System.out.println(getName()+" "+i);
        }
    }
    
    public static void main(String[] args){
        DaemonTest t= new DaemonTest();
        //将此线程设置为后台线程
        t.setDaemon(true);
        t.start();
        
        for(int i=0;i<100;i++){
            System.out.println(Thread.currentThread().getName()+" "+i);
        }
    }
}

解析:今天我们分享的这个线程很有意思,大家自己根据稳重的代码运行就行(PS 大家可以修改一些代码中的i的值并运行,看看运行结果)。
(1)在这里我首先设置main方法里面i的值为10 , DaemonTest子线程都没有来得及运行主线程就结束了。

(2)我设置方法main里面的i为2000,后台线程先执行完,这个因为前台线程的循环次数远大于后台线程循环次数,所以会出现这样的结果。后台线程已经结束,前台线程还在进行。

(3)我设置main 方法中的i为100.,在main执行过程中后台线程就抢夺了资源开始运行,在主线程结束之后,后台进程还运行了一部分。这是因为前台进程死亡后,JVM还需要通知后台进程死亡。从后台进程接受指令到他做出相应需要一定的时间,所以后台线程仍然能够执行一部分。
      

总结:
       线程的控制是很有意思的一件事情,因为线程装入CPU的顺序是不定的,所以执行出来的结果也不相同,这就是并发程序的魅力,我们要做的是让我们的代码更好的符合我们的想法去实现。很高兴和大家分享。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值