更新時間:2023-04-19 來源:黑馬程序員 瀏覽量:
在Java中,Thread類中的yield()方法用于將 CPU 資源讓給其他線程。當一個線程調(diào)用yield()方法時,它會暫停當前正在執(zhí)行的任務(wù)并讓出CPU資源,以便其他線程有機會執(zhí)行。如果沒有其他線程需要執(zhí)行,那么該線程將繼續(xù)執(zhí)行。
下面是一個簡單的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);
// 調(diào)用 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();
}
}
在這個例子中,我們創(chuàng)建了兩個 YieldDemo 線程對象并啟動它們。每個線程都會運行一個循環(huán),打印出線程名稱和循環(huán)計數(shù)器的值。在每次循環(huán)迭代中,線程都會調(diào)用 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
注意到,在輸出中,兩個線程交替運行,每個線程都執(zhí)行了五次循環(huán),但它們的運行順序并不是固定的。這是因為我們在每次循環(huán)迭代中調(diào)用了yield() 方法,讓出了CPU資源給其他線程。這樣可以增加程序的并發(fā)性,使得多個線程可以更公平地使用CPU資源。