勵志

勵志人生知識庫

wait()方法

wait()方法是Java中的一個重要方法,它允許一個執行緒在等待對象鎖的同時暫停執行。當一個執行緒執行到某個對象的wait()方法時,它會釋放該對象的鎖,並進入等待池,等待其他執行緒調用該對象的notify()或notifyAll()方法來喚醒它。wait()方法有以下幾種重載形式:

無參數的wait()。該執行緒會一直等待,直到被其他執行緒調用notify()或notifyAll()方法喚醒,或者發生異常退出。

帶long timeout參數的wait(long timeout)。該執行緒最多等待timeout毫秒,如果到了時間還沒有被其他執行緒喚醒,則該方法返回,執行緒繼續往下執行。

帶long timeout和int nanos參數的wait(long timeout, int nanos)。該執行緒最多等待timeout毫秒加nanos納秒,如果到了時間還沒有被其他執行緒喚醒,則該方法返回,執行緒繼續往下執行。

wait()方法的使用需要配合synchronized關鍵字,因為它需要在持有鎖的情況下使用。如果一個執行緒調用了wait()方法但沒有持有鎖,它會拋出IllegalMonitorStateException異常。wait()方法執行後,當前執行緒會釋放鎖並進入等待狀態,直到被其他執行緒喚醒。喚醒執行緒的方法可以是notify()或notifyAll(),這些方法需要線上程同步塊中被調用。如果一個執行緒調用了wait()方法,並且它被其他執行緒中斷,它會拋出InterruptedException異常。