在Java中,可以使用wait()和notify()/notifyAll()方法來實現線程之間的高效同步。以下是一個簡單的示例代碼:
public class SyncExample {
private boolean ready = false;
public synchronized void waitForReady() throws InterruptedException {
while (!ready) {
wait();
}
}
public synchronized void setReady() {
ready = true;
notifyAll();
}
}
在上面的示例中,SyncExample類中的waitForReady()方法會在ready為false時調用wait()方法進入等待狀態,直到其他線程調用setReady()方法將ready設置為true并調用notifyAll()方法來喚醒所有等待的線程。
需要注意的是,在使用wait()和notify()/notifyAll()方法時,必須在同步代碼塊內調用,即在synchronized關鍵字修飾的方法或代碼塊中調用,以確保線程安全。
另外,為了避免出現死鎖等問題,建議在調用wait()方法時設置超時時間,以便在超時后自動喚醒線程。