勵志

勵志人生知識庫

java的wait方法

Java中的wait()方法定義在Object類中,用於使當前執行緒等待,直到其他執行緒通過調用notify()或notifyAll()方法來喚醒它。當執行緒調用wait()方法時,它會釋放鎖,進入等待狀態,允許其他執行緒訪問被鎖定的資源。

wait()方法通常與synchronized關鍵字一起使用,以確保執行緒在等待時釋放鎖。以下是其使用方法:

在同步方法或同步塊中調用wait()方法。如果沒有持有適當的鎖,將拋出IllegalMonitorStateException異常。

wait(long timeout)允許執行緒等待指定的時間後自動喚醒。如果在這段時間內沒有其他執行緒調用notify()或notifyAll()方法,則執行緒會自動喚醒。

wait()方法的使用應結合循環進行,以防止虛假喚醒(spurious wakeup),即在未被其他執行緒通知的情況下被喚醒。

此外,notify()和notifyAll()方法也需要在同步方法或同步塊中調用,它們分別喚醒單個或所有等待的執行緒。喚醒的執行緒需要重新獲取鎖才能繼續執行。