在Android開發中,wait()方法用于讓當前線程等待,直到其他線程調用此對象的notify()或notifyAll()方法。當使用wait()方法時,線程會釋放對象鎖并進入等待狀態,直到其他線程調用notify()或notifyAll()方法喚醒它。為了避免死鎖和提高系統的響應性,通常需要設置超時時間。
在Android中,可以使用Object.wait(long timeout)方法設置超時時間。這個方法會讓當前線程等待指定的毫秒數,如果在超時時間內沒有收到notify()或notifyAll()方法的調用,線程會繼續執行。
下面是一個簡單的示例:
synchronized (lock) {
try {
// 等待1000毫秒(1秒)
lock.wait(1000);
} catch (InterruptedException e) {
// 處理中斷異常
e.printStackTrace();
}
}
在這個示例中,線程會等待1000毫秒,如果在1秒內沒有收到notify()或notifyAll()方法的調用,線程會繼續執行。注意,在使用wait()方法時,必須將其放在synchronized代碼塊中,以確保線程安全。
在處理wait()超時的情況時,可以考慮以下幾種策略:
java.util.concurrent.locks.Condition接口創建條件變量,它提供了更靈活的等待和通知機制。