在Android開發中,wait()和notify()/notifyAll()方法是Java中的Object類的方法,主要用于多線程編程中的線程間通信。它們允許一個線程等待另一個線程執行特定操作,或者在特定條件滿足時通知等待的線程繼續執行。
以下是wait()在Android中的適用場景:
wait()和notify()/notifyAll()來確保線程安全。例如,當一個線程正在修改共享數據時,其他線程可能需要等待直到修改完成。wait()和notify()/notifyAll()可以用于在這兩個線程之間同步數據。wait()方法讓線程進入等待狀態,并在事件發生時通過notify()/notifyAll()喚醒它。wait()方法來暫停線程的執行,直到倒計時結束或定時器觸發。需要注意的是,在使用wait()時,必須確保線程已經獲得了對象的監視器(即鎖)。否則,調用wait()會拋出IllegalMonitorStateException異常。此外,wait()通常與synchronized關鍵字一起使用,以確保線程安全地訪問共享資源。
示例代碼:
synchronized (lock) {
while (!condition) {
try {
lock.wait(); // 等待條件滿足
} catch (InterruptedException e) {
e.printStackTrace();
}
}
// 條件滿足,繼續執行后續代碼
}
在這個示例中,lock是一個對象鎖,condition是一個布爾變量,用于表示條件是否滿足。當條件不滿足時,線程會調用lock.wait()進入等待狀態;當條件滿足時,其他線程可以通過調用lock.notify()或lock.notifyAll()喚醒等待的線程。