執行緒狀態轉換

2021-09-24 17:50:31 字數 559 閱讀 6277

退出方法

沒有設定 timeout 引數的 object.wait() 方法

object.notify() / object.notifyall()

沒有設定 timeout 引數的 thread.join() 方法

被呼叫的執行緒執行完畢

locksupport.park() 方法

locksupport.unpark(thread)

退出方法

thread.sleep() 方法

時間結束

設定了 timeout 引數的 object.wait() 方法

時間結束 / object.notify() / object.notifyall()

設定了 timeout 引數的 thread.join() 方法

時間結束 / 被呼叫的執行緒執行完畢

locksupport.parknanos() 方法

locksupport.unpark(thread)

locksupport.parkuntil() 方法

locksupport.unpark(thread)

執行緒狀態轉換

建立後尚未啟動。可能正在執行,也可能正在等待 cpu 時間片。包含了作業系統執行緒狀態中的 running 和 ready。等待獲取乙個排它鎖,如果其執行緒釋放了鎖就會結束此狀態。等待其它執行緒顯式地喚醒,否則不會被分配 cpu 時間片。進入方法 退出方法 沒有設定 timeout 引數的 obje...

執行緒狀態轉換

runnable waiting 執行緒用synchronized obj 獲取了物件鎖後 呼叫obj.wait 方法時,t 執行緒從runnable waiting 呼叫obj.notify obj.notifyall t.interrupt 時 競爭鎖成功,t 執行緒從waiting runna...

執行緒狀態轉換

test public void testthreadstate1 throws exception catch interruptedexception e system.out.println 1 thread.currentthread getname 的狀態是 thread.currentt...