sleep方法的使用,進入sleep狀態不釋放鎖

2021-09-25 05:57:41 字數 758 閱讀 7430

thread類中的靜態方法sleep(),當乙個執行中的執行緒呼叫了thread的sleep()方法後,呼叫執行緒會暫時讓出時間的執行權,這期間不參與cpu的排程,但是該執行緒持有的鎖是不讓出的。時間到了會正常返回,執行緒處於就緒狀態,然後參與cpu排程,獲取到cpu資源之後就可以執行。

如果在睡眠期間,其他執行緒呼叫了該執行緒的interrup()的方法中斷了該執行緒,則該執行緒會呼叫sleep方法的地方丟擲interruptedexception異常而返回

public class threaddemo  catch (interruptedexception e) 

}}).start();

new thread(()-> catch (interruptedexception e)

system.out.println("b休眠10秒醒來");

}}).start();

}}

無論執行多少次,都是先a輸出再b輸出 或者先b輸出再a輸出,不會出現交叉輸出的情況,

因為a獲取到鎖之後,即使是sleep也不會釋放鎖,因b獲取不到鎖,也就無法執行。

輸出結果

a休眠10秒不放棄鎖

a休眠10秒醒來

b休眠10秒不放棄鎖

b休眠10秒醒來

或者

b休眠10秒不放棄鎖

b休眠10秒醒來

a休眠10秒不放棄鎖

a休眠10秒醒來

Java Thread之Sleep 使用方法總結

thread.sleep 是thread類的乙個靜態方法,使當前執行緒休眠,進入阻塞狀態 暫停執行 如果執行緒在睡眠狀態被中斷,將會丟擲iterruptedexception中斷異常。主要方法如下 a sleep long millis 執行緒睡眠 millis 毫秒 b sleep long mi...

使用NSENTER進入容器的方法

對於執行在後台的docker容器,我們經常需要做的事情是進入到容器中,docker為我們提供了docker exec docker attach 命令,並且還提供了nsenter工具,外部工具供我們使用。docker attach存在的問題是 當多個視窗同時attach到同乙個容器時,所有的視窗都會...

Sleep函式的使用

sleep 函式函式名 sleep 功 能 執行掛起一段時間 用 法 unsigned sleep unsigned milliseconds 在 vc中使用帶上標頭檔案 include 在 gcc編譯器 中,使用的標頭檔案因 gcc版本的不同而不同 include 注意 在vc中 sleep 中的...