亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在Java的線程休眠里,Thread.sleep(0) 實際上線程休眠了多久?

在Java的線程休眠里,Thread.sleep(0) 實際上線程休眠了多久?

白板的微信 2022-05-19 12:15:11
Java線程 Java線程在Java的線程休眠里,Thread.sleep(0)實際上線程休眠了多久哦?
查看完整描述

2 回答

?
Helenr

TA貢獻1780條經驗 獲得超4個贊

Java Thread sleep示例
這里是一個簡單的程序,它使用Thread.sleep()暫停主線程2分鐘。
[java] view plain copy
package com.journaldev.threads;
public class ThreadSleep {
public static void main(String[] args) throws InterruptedException {
long start = System.currentTimeMillis();
Thread.sleep(2000);
System.out.println("Sleep time in ms = "+(System.currentTimeMillis()-start));

}
}
如果你將執行上面的程序,你將注意到線程休眠打印時間略微大于2000毫秒,導致線程這樣執行的原因是操作系統具體實現和線程調度引起的。
Java線程休眠要點:
1.它總是暫停當前執行的線程
2.實際休眠的線程在喚醒開始執行前依賴于系統定時器和調度器,對于一個平穩的系統來住,線程實際執行的時間接近于指定線程休眠時間,但是對于一個忙碌的系統來說它將稍微超出一些。
3.當線程休眠時不會丟失已經獲得的監控和鎖。
4.任何線程都能中斷當前休眠的線程,將導致InterruptedException異常拋出。
線程休眠是如何工作的:
Thread.sleep()與線程調度器交互,在指定的時間內將當前線程作為等待狀態放入,一旦等待時間結束后,線程狀態變為可運行狀態,并等待CPU進一步執行。所以當前線程的實際休眠時間依賴于線程調度器和一部門操作系統。


查看完整回答
反對 回復 2022-05-23
?
小怪獸愛吃肉

TA貢獻1852條經驗 獲得超1個贊

Thread.sleep(0)方法將線程休眠,也就是線程進入阻塞階段,時間長短由方法傳入的參數(long類型)決定,你這個也就是0ms(1000ms=1秒);時間到了之后線程進入就緒階段,等待進程分配資源才能再次執行,休眠0ms可以用來切換線程用。但是注意:該方法不會釋放線程鎖。

查看完整回答
反對 回復 2022-05-23
  • 2 回答
  • 0 關注
  • 366 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號