區別
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培訓”的問題,歡迎咨詢千鋒教育在線名師。千鋒教育多年辦學,課程大綱緊跟企業需求,更科學更嚴謹,每年培養泛IT人才近2萬人。不論你是零基礎還是想提升,都可以找到適合的班型,千鋒教育隨時歡迎你來試聽。