在Java編程中,yield和sleep是兩個(gè)用于線程控制的重要方法。接下來(lái),我們將詳細(xì)介紹yield和sleep的用法,以及它們之間的區(qū)別。
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(); } } } }
在上述代碼中,我們定義了一個(gè)線程類ThreadExample,該類實(shí)現(xiàn)Runnable接口,并重寫了run()方法。在run()方法中,我們實(shí)現(xiàn)了一個(gè)循環(huán),輸出當(dāng)前線程的名稱和數(shù)字,并使用了yield和sleep方法。
yield方法可以讓出當(dāng)前線程所占用的CPU資源,讓其他線程有機(jī)會(huì)運(yùn)行。在上述代碼中,每次輸出后,我們都調(diào)用了Thread.yield()方法,讓其他線程有機(jī)會(huì)運(yùn)行。
與yield不同的是,sleep方法可以讓線程休眠一段時(shí)間,暫時(shí)停止運(yùn)行。在上述代碼中,我們使用Thread.sleep()方法讓線程休眠100毫秒。在線程休眠期間,CPU資源將被其他線程占用。
總體來(lái)說(shuō),yield和sleep都是用于線程控制的方法,但它們的作用不同。yield可以讓出CPU資源,讓其他線程運(yùn)行,而sleep則可以讓線程暫時(shí)停止運(yùn)行,等待一段時(shí)間后再次運(yùn)行。