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 中的...