Java前台线程与后台线程

Java前台线程与后台线程

上一篇博客在main()方法中,创建并启动了四个新的线程后,main()方法中的代码执行完毕,此时,方法会结束,main线程也就随之结束了

通过程序的运行结果可以看出,虽然,main线程结束了,但是整个Java程序却没有随之结束,仍然在执行售票的代码

对于Java程序来说,只要还有一个前台线程在运行,这个进程就不会结束,如果一个进程中,只有后台线程在运行,这个进程就会结束

前台线程与后台线程

前台线程、后台线程是一种相对的概念
新创建的线程,默认都是前台线程
如果,某个线程对象在启动之前,调用了setDaemon(true)语句,这个线程就变成了一个后台线程
示例,Example06.java

// 创建DamonThread类,实现Runnable接口
class DamonThread implements Runnable{
    // 实现接口中的run()方法
    public void run(){
        while(true){
            System.out.println(Thread.currentThread().getName()+"---is running.");
        }
    }
}
public class Example06{
    public static void main(String[] args){
        System.out.println("main线程是后台线程吗?"+Thread.currentThread().isDaemon());
        // 创建一个DamonThread对象dt
        // 创建线程t,共享dt资源
        DamonThread dt=new DamonThread();
        Thread t=new Thread(dt,"后台线程");
        System.out.println("t线程默认是后台线程吗?"+t.isDaemon());
        // 将线程t,设置为后台线程
        // 调用start()方法,开启线程t
        t.setDaemon(true);
        t.start();
        for(int i=0;i<10;i++){
            System.out.println(i);
        }
    }

}

编译运行
这里写图片描述
演示了一个后台线程结束的过程
当开启线程t之后,会执行死循环中的打印语句,我们将线程t设置为后台线程后,当前台线程死亡后,JVM会通知后台线程

由于,后台线程从接受指令,到做出响应,需要一定的时间,因此,打印了几次后台线程—is running语句后,后台线程也结束了
因此,说明后台线程在运行时,进程就结束了

设置后台线程

将某个线程设置为后台线程,必须在该线程启动之前
也就是说,setDaemon()方法必须在start()方法之前调用,否则,会引发IllegalTreadStateException异常

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值