Thread.setDaemon

from http://blog.csdn.net/cooljia/article/details/5949478


忽然在某段程序中看到了Thread.setDaemon的用法,经过学习以后了解:

1. setDaemon需要在start方法调用之前使用

2. 线程划分为用户线程和后台(daemon)进程,setDaemon将线程设置为后台进程

3. 如果jvm中都是后台进程,当前jvm将exit。(随之而来的,所有的一切烟消云散,包括后台线程啦)

4. 主线程结束后,

      4.1 用户线程将会继续运行

      4.2 如果没有用户线程,都是后台进程的话,那么jvm结束

 

sample:

 

 

[java] view plain copy
  1. package a.b.c;  
  2.   
  3. import java.io.IOException;  
  4.   
  5. public class TestThread extends Thread {  
  6.       
  7.     public TestThread() {  
  8.     }  
  9.     /** *//** 
  10.      * 线程的run方法,它将和其他线程同时运行 
  11.      */  
  12.     public void run(){  
  13.         for(int i = 1; i <= 100; i++){  
  14.             try{  
  15.                 Thread.sleep(100);  
  16.                   
  17.             } catch (InterruptedException ex){  
  18.                 ex.printStackTrace();  
  19.             }  
  20.             System.out.println(i);  
  21.         }  
  22.     }  
  23.     public static void main(String [] args){  
  24.         TestThread test = new TestThread();  
  25.         // 如果不设置daemon,那么线程将输出100后才结束  
  26.         test.setDaemon(true);  
  27.         test.start();  
  28.         System.out.println("isDaemon = " + test.isDaemon());  
  29.         try {  
  30.             System.in.read(); // 接受输入,使程序在此停顿,一旦接收到用户输入,main线程结束,守护线程自动结束  
  31.         } catch (IOException ex) {  
  32.             ex.printStackTrace();  
  33.         }  
  34.     }  
  35. }  

 


你可能感兴趣的:(java,jvm,String)