在Java編程中,yield和sleep是兩個用于線程控制的重要方法。接下來,我們將詳細介紹yield和sleep的用法,以及它們之間的區別。
public class ThreadExample implements Runnable { public void run() { for(int i=0; i<5; i++) { System.out.println(Thread.currentThread().getName() + ": " + i); Thread.yield(); // 使用yield讓出CPU資源 try { Thread.sleep(100); // 線程休眠100毫秒 } catch (InterruptedException e) { e.printStackTrace(); } } } }
在上述代碼中,我們定義了一個線程類ThreadExample,該類實現Runnable接口,并重寫了run()方法。在run()方法中,我們實現了一個循環,輸出當前線程的名稱和數字,并使用了yield和sleep方法。
yield方法可以讓出當前線程所占用的CPU資源,讓其他線程有機會運行。在上述代碼中,每次輸出后,我們都調用了Thread.yield()方法,讓其他線程有機會運行。
與yield不同的是,sleep方法可以讓線程休眠一段時間,暫時停止運行。在上述代碼中,我們使用Thread.sleep()方法讓線程休眠100毫秒。在線程休眠期間,CPU資源將被其他線程占用。
總體來說,yield和sleep都是用于線程控制的方法,但它們的作用不同。yield可以讓出CPU資源,讓其他線程運行,而sleep則可以讓線程暫時停止運行,等待一段時間后再次運行。