java守护线程是指什么?有什么作用?

XIAO 2020-05-05 14:48:26 java常见问答 3404

在java软件开发领域,线程这个词可能经常会被提到,那么你是否也听说过java的守护线程呢?了解它是指什么吗?知道它有何作用吗?有兴趣的朋友可以跟小编一起看看。

守护线程(Daemon Thread)其实就是运行在后台的线程。在java中设置“Thread#setDaemon”方法为true,就表示该线程为守护线程。需要注意的是该方法必须在“Thread#start”方法之前调用,否则会就抛出java.lang.IllegalThreadStateException异常。

关于守护线程需要注意的一点就是,当所有非守护线程都结束的时候,java虚拟机就会退出,不管此时有没有守护线程在运行。

所以,如下示例:

package com.jrkui.thread;
public class SimpleDaemon extends Thread
{
    private int num;
    public SimpleDaemon(int num)
    {
        this.num = num;
        setDaemon(true);
        start();
    }
    @Override
    public void run()
    {
        try
        {
            while (true)
            {
                sleep(100);
            }
        }
        catch (InterruptedException e)
        {
            e.printStackTrace();
        }
        System.out.println(num);
    }
    public static void main(String[] args)
    {
        for (int i = 0; i < 3; i++)
        {
            new SimpleDaemon(i);
        }
    }
}

运行结果就是:java虚拟机正常退出,控制台无任何输出。是因为主线程运行完毕了,所有虚拟机退出了。如果setDaemon为false,那么新起的三个线程一直挂起,java虚拟机不会退出。

那么以上就是本篇文章的所有内容了,还想了解更多java架构师的相关信息,记得来关注本站消息,更多精彩消息等你来解锁。