ホームページ  >  記事  >  Java  >  Javaでは、ロックを取得せずにwait()メソッドを呼び出すことはできますか?

Javaでは、ロックを取得せずにwait()メソッドを呼び出すことはできますか?

WBOY
WBOY転載
2023-09-03 17:21:07757ブラウズ

Javaでは、ロックを取得せずにwait()メソッドを呼び出すことはできますか?

ロックを取得せずに 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 サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。