Java的Daemon线程

来源:互联网 发布:网络用语mjd什么意思 编辑:程序博客网 时间:2024/05/22 01:26

Daemon名字:守护线程,是运行于后台的线程。

jvm中如果只有daemon线程的之后,将会停止线程并退出jvm。

1、使用setDaemon将线程设置为守护线程。

2、需要在start方法调用之前使用。

3、主线程结束后,用户线程将会继续运行,如果没有用户线程,都是后台进程的话,那么jvm结束【daemon线程也结束】。

4、如果是一个Daemon线程,那么它创建的任何线程也会自动具备Daemon属性。

[java] view plaincopy
  1. import java.io.IOException;  
  2.   
  3. public class DaemonThreadTest extends Thread {  
  4.   
  5.     public DaemonThreadTest() {  
  6.     }  
  7.   
  8.     public void run() {  
  9.         for (int i = 1; i <= 100; i++) {  
  10.             try {  
  11.                 Thread.sleep(100);  
  12.             } catch (InterruptedException ex) {  
  13.                 ex.printStackTrace();  
  14.             }  
  15.             System.out.println(i);  
  16.         }  
  17.     }  
  18.   
  19.     public static void main(String[] args) {  
  20.         DaemonThreadTest test = new DaemonThreadTest();  
  21.         // 如果不设置daemon,那么线程将输出100后才结束  
  22.         // 在test未结束前,执行下面的输入操作,则test终止执行,因为jvm中只剩下守护线程时会终止  
  23.         test.setDaemon(true);  
  24.         test.start();  
  25.         System.out.println("isDaemon = " + test.isDaemon());  
  26.         try {  
  27.             System.in.read(); // 接受输入,使程序在此停顿,一旦接收到用户输入,main线程结束,守护线程自动结束  
  28.         } catch (IOException ex) {  
  29.             ex.printStackTrace();  
  30.         }  
  31.         System.out.print(Thread.currentThread().getName() + "结束");  
  32.     }  
  33. }  


上面代码中,一旦用户输入内容敲击回车之后,daemon线程也会立即停止。

在java中,很多地方需要用到守护线程。比如说gc中,回收垃圾的线程就是守护线程。

0 0
原创粉丝点击