執行緒的阻塞

2021-10-04 23:22:49 字數 302 閱讀 8243

一、等待阻塞:

執行的執行緒呼叫了wait()方法,會釋放鎖,jvm會將該執行緒到等待佇列中。

二、同步阻塞:

執行緒在執行過程中,獲取物件的同步鎖,發現這個同步鎖在被其他執行緒占用,則jvm會將該執行緒放入鎖池(lock pool)中。

三、其他阻塞:

執行的執行緒執行join或者sleep方法(wait方法和sleep方法的區別),或者執行緒發起i/o請求時候,jvm會將執行緒設定為阻塞狀態。當sleep超時,或則join的執行緒終止或者超時,或者i/o完畢以後,執行緒就會重新進入可執行狀態(執行緒五種狀態)

參考文章

1 1 執行緒阻塞

在高併發情況下容易出現請求丟失 實際是執行緒阻塞 的問題,原因就是介面或服務是單執行緒的,而且沒有加其他機制。請求丟失其實就是介面阻塞造成的,而阻塞一般由於單執行緒造成的。更正 目前主流web伺服器 如tomcat 本身就被設計成多執行緒的,對每乙個http請求伺服器都會啟動乙個執行緒來處理,這就意...

python nfqueue執行緒阻塞問題的解決方法

前段時間,專案裡用到python nfqueue,但是遇到乙個問題,當網絡卡裡沒有資料時,監控執行緒被阻塞。話不多說,先來一段 t2 threading.thread target self.start nfqueue t2.daemon true t2.start 啟動nfqueue p thre...

執行緒的讓步與阻塞

執行緒的讓步 執行緒讓步 thread.yield public class testyield class person implements runnable 執行緒阻塞 main是主線程,在主程式中,子執行緒a呼叫join 方法,a執行緒就在主線程之前執行。但所有子執行緒也需要競爭cpu。a執...