C語言中文網 目錄

Java yieId()方法如何使用

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() 方法后,線程的執行時間明顯變長。

精美而實用的網站,提供C語言、C++、STL、Linux、Shell、Java、Go語言等教程,以及socket、GCC、vi、Swing、設計模式、JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo
极速pk10开户