2009-07-19 58 views
0

如果線程中的某個函數要返回,我們如何描述此行爲。關於線程的術語

  1. 線程返回。

  2. 線程正在死亡。

「線程死了」是什麼意思?

回答

0

大多數線程API通過讓操作系統代表您運行由您提供的特定功能來工作。當這個函數最終返回時(通過例如返回語句或者到達其代碼的末尾),操作系統結束該線程。

至於「死」線程 - 這不是我見過的在線程API中使用的術語。

1

在我的理解中,線程基本上是內核數據結構。您可以通過系統API創建和銷燬線程。如果你只是創建一個線程,啓動它的執行,並且它用完了代碼,那麼內核可能會將它置於非執行狀態。在非託管代碼中,您仍然必須釋放該資源。

然後是線程池。在這種情況下,你排隊工作由線程池完成,平臺負責挑選線程並執行你的工作。工作完成後,線程返回到線程池。該平臺負責創建和銷燬線程,以平衡可用線程與工作負載和系統資源之間的關係。

1

從Java 1.3開始,引入了六態線程模型。這包括以下狀態:

  1. 現成的運行:在創建線程,並等待被挑選由線程調度
  2. 運行運行:該線程執行。
  3. 正在等待:線程在等待某些外部處理完成(如I/O)時處於阻塞狀態。
  4. 睡眠:線程被迫經由.sleep()
  5. 阻止睡覺:在I/O:後成品(例如讀取數據的一個字節)將進入狀態1。 開啓同步:獲取鎖定後將進入狀態1。
  6. DeadTerminally):線程已完成工作,無法恢復。

今天很少使用「死」這個詞,幾乎完全改爲「終止」。這兩個是相同的。