色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

java wait 0 和yield

方一強1年前10瀏覽0評論

在Java中,wait(0)和yield()是兩個非常重要的方法。它們可以幫助我們控制線程的執行順序,從而提高程序的性能。

首先,我們來看一下wait(0)方法。這個方法的作用是讓當前線程等待一段時間,時間為0表示線程立即進入等待狀態。通常情況下,我們會給wait()方法傳遞一個時間參數,表示讓線程等待多少毫秒。但是如果我們傳遞0或者一個負數,那么線程就會立即進入等待狀態,直到被其他線程喚醒。需要注意的是,wait()方法必須在synchronized塊中調用。

public class WaitThread extends Thread {
public synchronized void run() {
try {
System.out.println("等待...");
wait(0);
System.out.println("喚醒...");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public class TestWait {
public static void main(String[] args) {
WaitThread waitThread = new WaitThread();
waitThread.start();
synchronized (waitThread) {
waitThread.notifyAll();
}
}
}

接下來,我們再看一下yield()方法。這個方法的作用是讓當前線程放棄當前的CPU執行時間,讓其他的線程有更多的機會去執行。這個方法并不會讓線程進入等待狀態,而是讓線程重新回到就緒狀態。需要注意的是,yield()方法并不能保證讓其他的線程有更多的機會去執行,只是增加了其他線程被執行的可能性。

public class YieldThread extends Thread {
public void run() {
for (int i = 0; i< 5; i++) {
System.out.println(getName() + "執行,i = " + i);
yield();
}
}
}
public class TestYield {
public static void main(String[] args) {
YieldThread t1 = new YieldThread();
YieldThread t2 = new YieldThread();
t1.start();
t2.start();
}
}

總結一下,wait(0)方法讓當前線程立即進入等待狀態,直到被其他線程喚醒;yield()方法讓當前線程放棄CPU執行時間,重新回到就緒狀態,讓其他線程有更多的機會去執行。