2020久久超碰欧美精品最新亚洲欧美日韩久久精品,国产福利电影一区二区三区,亚洲欧美日韩一区在线观看,亚洲国产欧美日韩欧美特级,亚洲欧美日韩成人一区久久,欧美日韩精品一区二区三区不卡,国产欧美日韩va另类影音先锋,亚洲欧美日韩久久精品,亚洲欧美日韩国产成人精品影院,亚洲国产欧美日韩精品一区二区三区,欧美日韩国产成人高清视频,日韩久久精品国产免费观看频道,久久人人爽人人爽从片av高清,国产精品综合一区二区

首頁常見問題正文

Thread類中的yield方法有什么作用?

更新時間:2023-04-19 來源:黑馬程序員 瀏覽量:

IT培訓班

  在Java中,Thread類中的yield()方法用于將 CPU 資源讓給其他線程。當一個線程調用yield()方法時,它會暫停當前正在執行的任務并讓出CPU資源,以便其他線程有機會執行。如果沒有其他線程需要執行,那么該線程將繼續執行。

  下面是一個簡單的Java代碼演示yield()方法的用法:

public class YieldDemo extends Thread {
    public YieldDemo(String name) {
        super(name);
    }

    public void run() {
        for (int i = 1; i <= 5; i++) {
            System.out.println(Thread.currentThread().getName()
                + " running: " + i);
            // 調用 yield() 方法
            Thread.yield();
        }
    }

    public static void main(String[] args) {
        YieldDemo t1 = new YieldDemo("Thread 1");
        YieldDemo t2 = new YieldDemo("Thread 2");

        // 啟動線程
        t1.start();
        t2.start();
    }
}

  在這個例子中,我們創建了兩個 YieldDemo 線程對象并啟動它們。每個線程都會運行一個循環,打印出線程名稱和循環計數器的值。在每次循環迭代中,線程都會調用 yield() 方法,以便讓其他線程有機會運行。

  運行這個程序,輸出可能是這樣的:

Thread 1 running: 1
Thread 2 running: 1
Thread 1 running: 2
Thread 2 running: 2
Thread 1 running: 3
Thread 2 running: 3
Thread 1 running: 4
Thread 2 running: 4
Thread 1 running: 5
Thread 2 running: 5

  注意到,在輸出中,兩個線程交替運行,每個線程都執行了五次循環,但它們的運行順序并不是固定的。這是因為我們在每次循環迭代中調用了yield() 方法,讓出了CPU資源給其他線程。這樣可以增加程序的并發性,使得多個線程可以更公平地使用CPU資源。

分享到:
在線咨詢 我要報名
和我們在線交談!