不可以在沒有取得鎖定的情況下呼叫 wait() 方法。在Java中,一旦取得了鎖,我們需要在該物件上呼叫wait()方法(可以帶有逾時或不帶逾時)。如果我們試圖在沒有取得鎖定的情況下呼叫 wait() 方法,它可能會拋出java.lang.IllegalMonitorStateException例外。
public class ThreadStateTest extends Thread { public void run() { try { <strong> </strong>wait(1000); } catch(InterruptedException ie) { ie.printStackTrace(); } } public static void main(String[] s) { ThreadStateTest test = new ThreadStateTest(); <strong> </strong>test.start(); } }
在上面的範例中,我們需要在不取得鎖定的情況下呼叫wait()方法,這樣在執行時會產生一個IllegalMonitorStateException 。為了解決這個問題,我們需要在呼叫wait()方法之前取得鎖,並宣告 run() 方法synchronized。
Exception in thread "Thread-0" java.lang.IllegalMonitorStateException at java.lang.Object.wait(Native Method) at ThreadStateTest.run(ThreadStateTest.java:4)
以上是在Java中,我們可以在不取得鎖的情況下呼叫wait()方法嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!