飞奔的兔子

久坐等于慢性自杀,每天多运动多锻炼

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异常

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/nangeali/article/details/79955069
上一篇Java多线程两种实现方式的对比
下一篇Java线程的生命周期
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭