線程的幾種狀態

線程的幾種狀態

線程的6種狀態:

1、New新建狀態:線程剛被創建,start方法之前的狀態。

2、Runnable運行狀態:得到時間片運行中狀態,Ready就緒,未得到時間片就緒狀態。

3、Blocked阻塞狀態:如果遇到鎖,線程就會變為阻塞狀態等待另一個線程釋放鎖。

4、Waiting等待狀態:無限期等待。

5、Time_Waiting超時等待狀態:有明確結束時間的等待狀態。

6、Terminated終止狀態:當線程結束完成之後就會變成此狀態。

線程(英語:thread)是操作系統能夠進行運算調度的最小單位。它被包含在進程之中,是進程中的實際運作單位。一條線程指的是進程中一個單一順序的控制流,一個進程中可以併發多個線程,每條線程並行執行不同的任務。在Unix System V及SunOS中也被稱為輕量進程(lightweight processes),但輕量進程更多指內核線程(kernel thread),而把用户線程(user thread)稱為線程。

線程是獨立調度和分派的基本單位。線程可以為操作系統內核調度的內核線程,如Win32線程;由用户進程自行調度的用户線程,如Linux平台的POSIX Thread;或者由內核與用户進程,如Windows 7的線程,進行混合調度。

同一進程中的多條線程將共享該進程中的全部系統資源,如虛擬地址空間,文件描述符和信號處理等等。但同一進程中的多個線程有各自的調用棧(call stack),自己的寄存器環境(register context),自己的線程本地存儲(thread-local storage)。

一個進程可以有很多線程,每條線程並行執行不同的任務。

在多核或多CPU,或支持Hyper-threading的CPU上使用多線程程序設計的好處是顯而易見,即提高了程序的執行吞吐率。在單CPU單核的計算機上,使用多線程技術,也可以把進程中負責I/O處理、人機交互而常被阻塞的部分與密集計算的部分分開來執行,編寫專門的workhorse線程執行密集計算,從而提高了程序的執行效率。