Java線程等待可以通過使用wait()
和notify()
方法來優化代碼執行。這可以幫助避免線程資源的浪費,提高程序的效率。
在需要等待的地方,使用wait()
方法讓線程進入等待狀態。當條件滿足時,通過調用notify()
方法來喚醒等待的線程繼續執行。
下面是一個簡單的示例代碼:
public class WaitNotifyExample {
private final Object lock = new Object();
private boolean condition = false;
public void waitForCondition() {
synchronized (lock) {
while (!condition) {
try {
lock.wait();
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
}
// 執行等待之后的操作
System.out.println("Condition is true, continue execution");
}
public void setConditionTrue() {
synchronized (lock) {
condition = true;
lock.notify();
}
}
public static void main(String[] args) {
WaitNotifyExample example = new WaitNotifyExample();
Thread thread1 = new Thread(() -> {
example.waitForCondition();
});
Thread thread2 = new Thread(() -> {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
example.setConditionTrue();
});
thread1.start();
thread2.start();
}
}
在這個例子中,waitForCondition()
方法會讓線程進入等待狀態,直到condition
條件為true時才會繼續執行。setConditionTrue()
方法會設置條件為true,并調用notify()
方法喚醒等待的線程。這樣可以避免線程一直占用資源等待條件滿足的情況發生,提高程序的效率。