Java 執行緒生命控制

2021-05-23 20:25:19 字數 632 閱讀 3727

乙個執行緒的產生是從我們呼叫了start方法開始進入runnable狀態,即可以被排程執行狀態,並沒有真正開始執行,排程器可以將cpu分配給它,真正執行其中的程式**。執行緒在執行過程中,有以下幾個可能的去向:

①沒有任何阻隔,執行完成直接結束,也就是run()方法執行完畢。

②排程器將cpu分配給其他執行緒,這個執行緒又變為runnable狀態。

③請求鎖旗標,卻得不到,這時候它要等待物件的鎖旗標,得到鎖旗標後又會進入runnable狀態開始執行。

④遇到wait方法,他會被放入等待池中繼續等待,直到有notify()或interrupt()方法執行,它才會被喚醒或打斷開始等待物件鎖旗標,等到鎖旗標後進入runnable狀態繼續執行。

控制線程宣告週期的方法有很多種,如suspend方法、resume方法和stop方法。但不推薦這種方法。

不推薦使用suspend和resume是因為:

①會導致死鎖。

②它允許乙個執行緒(甲)通過直接控制另外乙個執行緒(乙)的**來直接控制那個執行緒(乙)。

stop能避免死鎖,但是帶來了另外的不足,如果乙個執行緒正在操作共享資料段,操作過程沒有完成就stop了的話,將會導致資料的不完整。因此stop方法也不提倡使用。

推薦使用控制run方法中迴圈條件的方法來結束乙個執行緒。

Java 執行緒生命週期,執行緒控制

新建 就緒 阻塞 執行 死亡 執行緒狀態。執行緒可以處於下列狀態之一 在給定時間點上,乙個執行緒只能處於一種狀態。這些狀態是虛擬機器狀態,它們並沒有反映所有作業系統執行緒狀態。執行緒控制 start 啟動執行緒 interrupt 中斷執行緒,喚醒正在休眠執行緒 檢測當前執行緒是否被中斷 isint...

java基礎 23 執行緒的控制與生命週期

static void sleep long millis 在指定的毫秒數內讓當前正在執行的執行緒休眠 暫停執行 此操作受到系統計時器和排程程式精度和準確性的影響。public class threadsleep extends thread catch interruptedexception e...

java多執行緒 執行緒生命週期

本節目標 了解執行緒的宣告週期 了解執行緒的停止操作 乙個新的執行緒建立之後,通過start 方法進入執行狀態,在執行狀態時可以使用yield 進行執行緒禮讓,但是仍然可以執行,使用wait 方法暫停乙個執行緒。suspend resume stop 都會產生死鎖問題,不建議使用。如果想讓執行緒停止...