在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架构师的相关信息,记得来关注本站消息,更多精彩消息等你来解锁。