Java yieId()方法如何使用

2020-07-16 10:04:38
yieId() 方法的作用是放棄當前的 CPU 資源,將它讓給其他的任務去佔用 CPU 執行時間。但放棄的時間不確定,有可能剛剛放棄,馬上又獲得 CPU 時間片。

例 1

建立一個執行緒實現從 1 開始,共累加 5 千萬次,要求線上程中輸出開始運算時間、結束運算時間以及運算耗時時間。具體實現程式碼如下:
package ch14;
public class MyThread12 extends Thread
{
    @Override
    public void run()
    {
        long beginTime=System.currentTimeMillis();
        System.out.println("執行緒開始執行時間:"+beginTime);
        int count=0;
        for (int i=0;i<50000000;i++)
        {
            //Thread.yield();    //呼叫yield()方法,暫時不用
            count=count+(i+1);
        }
        long endTime=System.currentTimeMillis();
        System.out.println("執行緒結束執行時間:"+endTime);
        System.out.println("本次執行用時:"+(endTime-beginTime)+"毫秒!");
    }
}

編寫主執行緒程式碼啟動上面的 MyThread12 執行緒,程式碼如下:
package ch14;
public class Test16
{
    public static void main(String[] args)
    {
        MyThread12 thread=new MyThread12();    //建立MyThread12執行緒範例
        thread.start();    //啟動執行緒
    }
}

在 MyThread12 執行緒類中呼叫 yield() 方法的程式碼被註釋了,此時執行結果如下所示。
執行緒開始執行時間:1540965620705
執行緒結束執行時間:1540965620729
本次執行用時:24毫秒!

下面取消對呼叫 yieId() 方法的程式碼註釋,再次執行程式,此時執行結果如下所示。
執行緒開始執行時間:1540965685288
執行緒結束執行時間:1540965696100
本次執行用時:10812毫秒!

對比兩次執行結果可以看到,呼叫 yieId() 方法後,執行緒的執行時間明顯變長。