??java給多線程編程提供了內置的支持。一條線程指的是進程中一個單一順序的控制流,一個進程可以并發多個線程,每條線程執行不同的任務。多線程是多任務的一種特別的形式,但多線程使用了更小的資源開銷。
??進程:一個進程包括由操作系統分配的內存空間,包含一個或者多個線程。一個線程不能獨立的存在,它必須是進程的一部分。一個進程一直運行,直到所有的非守候線程都結束運行后才能結束。
??多線程能滿足程序員編寫非常有效率的程序來達到充分利用CPU的目的,因為CPU的空閑時間能夠保持在最低限度。
一個線程的生命周期
線程經過其生命周期的各個階段。下圖顯示了一個線程完整的生命周期。
新建狀態: 一個新產生的線程從新狀態開始了它的生命周期。它保持這個狀態直到程序start這個線程。
運行狀態:當一個新狀態的線程被start以后,線程就變成可運行狀態,一個線程在此狀態下被認為是開始執行其任務
就緒狀態:當一個線程等待另外一個線程執行一個任務的時候,該線程就進入就緒狀態。當另一個線程給就緒狀態的線程發送信號時,該線程才重新切換到運行狀態。
休眠狀態: 由于一個線程的時間片用完了,該線程從運行狀態進入休眠狀態。當時間間隔到期或者等待的事件發生了,該狀態的線程切換到運行狀態。
終止狀態: 一個運行狀態的線程完成任務或者其他終止條件發生,該線程就切換到終止狀態。
線程的優先級
每一個Java線程都有一個優先級,這樣有助于操作系統確定線程的調度順序。Java優先級在MIN_PRIORITY(1)和MAX_PRIORITY(10)之間的范圍內。默認情況下,每一個線程都會分配一個優先級NORM_PRIORITY(5)。
具有較高優先級的線程對程序更重要,并且應該在低優先級的線程之前分配處理器時間。然而,線程優先級不能保證線程執行的順序,而且非常依賴于平臺。
創建一個線程
Java提供了三種創建線程方法:
通過實現Runnable接口;
通過繼承Thread類本身;
通過 Callable 和 Future 創建線程。