線程的狀態
新建(New):在程序中用構造方法創建一個線程對象后,新的線程對象便處于新建狀態,此時,他已經有了相應的內存空間和其他資源,但還不處于課運行狀態。
就緒(Runable):新建線程對象后,可調用線程start()方法來啟動線程。當線程啟東時,線程就進入就緒狀態。此時,線程進入線程隊列排隊,等待CPU服務,即具備了運行條件。
運行(Running):當就緒狀態的線程被調用并獲得處理器資源時,線程就進入了運行狀態。這時,自動調用線程對象的run()方法。run()方法定義了該線程的操作和功能。
阻塞(Blocked):一個正在執行的線程在某些特殊情況下,如被認為掛起或需要執行耗時的輸入/ 輸出操作時,會讓出CPU并暫時終止自己的行為,進入堵塞狀態。進入堵塞狀態,在可執行狀態下,如果調用 sleep(),suspend().wait()等方法,線程將進入堵塞狀態。堵塞時,線程不能進入排隊隊列,只有當引起 堵塞的原因被消除后,線程才可以轉入就緒狀態。
死亡(Dead):線程調用stop()方法或者run()方法執行結束后,就處于死亡狀態。處于死亡狀態的線程將不具備繼續運行的能力。
線程在計算機系統中的價值是什么?
線程(英語:thread)是操作系統能夠進行運算調度的最小單位。它被包含在進程之中,是進程中的實際運作單位。一條線程指的是進程中一個單一順序的控制流,一個進程中可以并發多個線程,每條線程并行執行不同的任務。在Unix System V及SunOS中也被稱為輕量進程(lightweight processes),但輕量進程更多指內核線程(kernel thread),而把用戶線程(user thread)稱為線程。
線程是獨立調度和分派的基本單位。線程可以為操作系統內核調度的內核線程,如Win32線程;由用戶進程自行調度的用戶線程,如Linux平臺的POSIXThread;或者由內核與用戶進程,如Windows 7的線程,進行混合調度。
同一進程中的多條線程將共享該進程中的全部系統資源,如虛擬地址空間,文件描述符和信號處理等等。但同一進程中的多個線程有各自的調用棧(call stack),自己的寄存器環境(register context),自己的線程本地存儲(thread-local storage)。
一個進程可以有很多線程,每條線程并行執行不同的任務。