首頁 > Java > java教程 > Java中yield()和sleep()的差別是什麼?

Java中yield()和sleep()的差別是什麼?

王林
發布: 2023-05-07 21:55:06
轉載
1589 人瀏覽過

區別

1、sleep()會導致目前執行緒暫停指定的時間,沒有CPU時間片的消耗

2、yield()只是對CPU調度器的一個提示,如果CPU調度器沒有忽略這個提示,會導致執行緒上下文的切換

sleep()會使執行緒短暫阻塞,在給定時間內釋放CPU資源

#如果yield()生效,yield()會使得從RUNNING狀態進入RUNNABLE狀態

sleep()會幾乎百分百地完成給定時間的休眠,但是yield()的提示不一定能擔保

一個執行緒呼叫sleep()而另一個執行緒呼叫interrupt()會捕獲到中斷訊號,而yield則不會

實例

package cn.hanquan.test;
/*
 * sleep模拟倒计时,每一秒减一
 */
public class Lambda {
public static void main(String[] args) {
 
// Labmda表达式
new Thread(() -> {
for (int i = 0; i < 100; i++) {
System.out.println(i);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
}
}
登入後複製

以上是Java中yield()和sleep()的差別是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:yisu.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板