ロックを取得せずに 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() methodsynchronized を宣言する必要があります。 出力
Exception in thread "Thread-0" java.lang.IllegalMonitorStateException at java.lang.Object.wait(Native Method) at ThreadStateTest.run(ThreadStateTest.java:4)
以上がJavaでは、ロックを取得せずにwait()メソッドを呼び出すことはできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。