1. 程式人生 > >Java之線程狀態

Java之線程狀態

util rac sta 獲取 一個 font start dsm 態能

Java線程有6種狀態:

1.New(新生),使用new Thread(r)創建一個新線程時,該線程處於新生狀態,新生狀態會為線程的執行做一些準備。

2.Runnable(可執行),調用線程的start方法,使該線程處於可執行狀態。

可執行狀態不代表該線程一定在執行,而是它具備執行的條件。它可能正在執行,也可能沒有在執行,這全然取決於線程調度控制。

3.Blocked(被堵塞)。當線程試圖獲取一個內部的對象鎖時,該對象鎖被其它線程持有,則該線程進入堵塞狀態。

4.Waiting(等待)。當在調用Object.wait方法、Thread.join方法、java.util.concurrent庫中的Lock或Condition時,該線程進入等待狀態。

5.Timed waiting(記時等待),進入該狀態的條件和進入等待狀態的條件同樣,只是此狀態能在指定的時間之後蘇醒,所以又有別於等待狀態。

6.Terminated(被終止),Java沒有可直接終止一個線程的方法(stop已經被申明過時不同意使用了。interrrupt方法僅僅是請求中斷,不是一定能夠中斷一個線程),所以僅僅有在程序自然結束或拋出了一個沒有捕獲的異常時,線程才會進入被終止狀態。

也有人將3、4、5統一歸為不可執行狀態,所以也能夠說線程是四種狀態。

Java之線程狀態