勵志

勵志人生知識庫

java wait方法

wait()方法是Java中的一個重要方法,屬於Object類,主要用於執行緒間的通信。這個方法可以使當前執行緒從正在執行的代碼中暫停,進入等待狀態,直到其他執行緒調用notify()或notifyAll()方法喚醒它。

wait()方法有兩種重載形式:

void wait(): 使當前執行緒進入等待狀態,直到其他執行緒調用notify()或notifyAll()方法喚醒它。這個版本的wait()方法必須在synchronized塊中調用,否則會拋出IllegalMonitorStateException異常。

void wait(long timeout): 使當前執行緒進入等待狀態,等待指定的時間後自動喚醒。如果在指定時間內沒有其他執行緒調用notify()或notifyAll()方法,當前執行緒會自動喚醒。

此外,還有一個帶毫秒參數的wait(long timeout)和微秒參數的wait(long timeout, int nanos)版本,這些版本的wait()方法也必須在synchronized塊中調用。

當調用wait()方法時,當前執行緒會釋放它所持有的鎖,允許其他執行緒進入synchronized塊。這樣設計是為了防止執行緒過度占用資源,確保多個執行緒可以訪問和修改共享數據。

需要注意的是,由於執行緒調度是非確定性的,因此不建議依賴特定執行緒的喚醒順序。此外,為了避免虛假喚醒(spurious wakeup),建議在循環中使用wait()方法檢查喚醒條件是否仍然為真。