在Java中,可以使用wait()
和notify()
方法來精確控制線程的等待和喚醒。
wait()
方法使線程等待:synchronized(object) {
while(condition) {
object.wait();
}
}
在上面的代碼中,使用synchronized
關鍵字鎖定一個對象,然后在一個循環中檢查條件是否滿足,如果條件不滿足,則調用wait()
方法使線程等待。
notify()
方法喚醒等待的線程:synchronized(object) {
object.notify();
}
在上面的代碼中,同樣使用synchronized
關鍵字鎖定一個對象,然后調用notify()
方法來喚醒等待的線程。
需要注意的是,wait()
和notify()
方法必須在synchronized
塊中使用,并且對同一個對象進行操作。這樣才能確保線程等待和喚醒的正確性。
另外,還可以使用wait(long timeout)
方法設置等待的超時時間,以及使用notifyAll()
方法喚醒所有等待的線程。