1. 程式人生 > >java執行緒的幾種狀態 ---小筆記

java執行緒的幾種狀態 ---小筆記



Java是少數的集中支援多執行緒的語言之一,大多數的語言智慧執行單獨的一個程式塊,

無法同時執行不同的多個程式塊,Java的多執行緒機制彌補了這個缺憾,他可以讓不同的程式塊一起執行

,這樣可以讓程式執行更加順暢,同時也達到了多工處理的目的:  

 一、執行緒和程序的概念
  現在的作業系統是多工作業系統。多執行緒是實現多工的一種方式。
  程序是程式的一個動態執行過程,是指一個記憶體中執行的應用程式,每個程序都有自己獨立的一塊記憶體空間,

       一個程序中可以啟動多個執行緒。比如在Windows系統中,一個執行的exe就是一個程序。執行緒是指程序中的一個執行流程,

      一個程序中可以執行多個執行緒。比如java.exe程序中可以執行很多執行緒。執行緒總是屬於某個程序,程序中的多個執行緒共享程序的記憶體。

     “同時”執行是人的感覺,線上程之間    實       際上輪換執行。

 二、Java中執行緒的實現


  在Java中藥想實現多執行緒有兩種手段,一種是整合Thread類,另一種就是實現Runnable介面。下面看繼承自Thread類執行緒的建立原理:

   首先定義一個執行緒類 該類必須繼承自Thread類,同時必須明確的覆寫run()方法
  如:
      view sourceprint?1 class MyThread extends Thread{   
   
       public void run(){ //覆寫Thread類中的run方法此方法是執行緒中   
   
         執行緒主體; 的主體   
            }
     }
       然後定義一個主類,例項化執行緒類的物件,發動啟動執行緒的命令
      如:
       view sourceprint?01 public class ThreadText{   

   

  public stataic void main(String args[]){   

   

  MyThread m1=new MyThread();//例項化物件   

   

  m1.start();//啟動多執行緒   

   

  }   

     

  };
 實現Runnable介面:
  首先定義一個執行緒類繼承自Runnable介面
  如:

         view sourceprint?1 class MyThread implements Runnable{   

    

   public void run(){ //覆寫Runnable介面中的run方法   

     

  執行緒主體;   

     

  }

 然後定義一個主類,例項化執行緒類的物件,發動啟動執行緒的命令
  如:

view sourceprint?01 public class ThreadText{   
     
 
   public stataic void main(String args[]){   

    

   MyThread m1=new MyThread();//例項化Runnable子類物件   

    

   Thread t1=new Thread(m1);//例項化Thread類物件   

     

   t1.start();//啟動多執行緒   

     

    }   

     

   };

  三、執行緒的幾種狀態
  在Java當中,執行緒通常都有五種狀態,建立、就緒、執行、阻塞和死亡。
  第一是建立狀態。在生成執行緒物件,並沒有呼叫該物件的start方法,這是執行緒處於建立狀態。
  第二是就緒狀態。當呼叫了執行緒物件的start方法之後,該執行緒就進入了就緒狀態,但是此時執行緒排程程式還沒有把該執行緒設定為當前執行緒,此時處於就緒狀態。線上程執行之後,從等待或者睡眠中回來之後,也會處於就緒狀態。
  第三是執行狀態。執行緒排程程式將處於就緒狀態的執行緒設定為當前執行緒,此時執行緒就進入了執行狀態,開始執行run函式當中的程式碼。
  第四是阻塞狀態。執行緒正在執行的時候,被暫停,通常是為了等待某個時間的發生(比如說某項資源就緒)之後再繼續執行。sleep,suspend,wait等方法都可以導致執行緒阻塞。
  第五是死亡狀態。如果一個執行緒的run方法執行結束或者呼叫stop方法後,該執行緒就會死亡。對於已經死亡的執行緒,無法再使用start方法令其進入就緒。