java yield()和sleep()的區別

z_paul發表於2021-09-11

java yield()和sleep()的區別

區別

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()的區別,希望對大家有所幫助。更多Java學習指路:

本教程操作環境:windows7系統、java10版,DELL G3電腦。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/75/viewspace-2829559/,如需轉載,請註明出處,否則將追究法律責任。

相關文章