區別
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中文網其他相關文章!