java中線程狀態-死亡


線程死亡:

線程會以如下3種方式結束,結束后就處於死亡狀態。

1、run()或call()方法執行完成,線程正常結束。

2、線程拋出一個未捕獲的ExceptionError 

3、直接調用該線程的stop方法結束該線程---該方法容易導致死鎖,通常不推薦使用。

 

為了測試某個線程是否已經死亡,可以調用線程對象isAlive()方法,當線程處於就緒、運行、阻塞三種狀態時,該方法返回true;當線程處於新建、死亡兩種狀態,該方法將返回false

 

注意:不要試圖對一個死亡的線程調用start方法使它重新啟動,死亡就是死亡,該線程不可能再次作為線程執行。(如果重新啟動的話,運行之后將引發IllegalThreadStateException異常,這表明處於死亡狀態的線程無法再次運行了。)

 

 1 public class StartDead extends Thread {
 2     private int i;
 3     public void run(){
 4         for(;i<30;i++){
 5             try{sleep(1000);
 6             System.out.println(getName()+" "+i);}catch(Exception e){
 7                 System.out.println(e);
 8             }
 9         }
10         
11     }
12     public static void main(String[] args){
13         StartDead s=new StartDead();
14         for(int k=0;k<100;k++){
15             //Thread.sleep(1000);
16             try{System.out.println("當先線程的名字是:"+Thread.currentThread().getName()+" "+k);
17             Thread.sleep(1000);}catch(Exception e){
18                 System.out.println(e);
19             }
20             if(k==5){
21                 s.start();
22                 System.out.println(s.isAlive());
23             }
24             if(k>5&& !s.isAlive()){
25                 s.start();
26             }
27         }
28     }
29 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM