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

WBOY
リリース: 2023-09-03 17:21:07
転載
751 人が閲覧しました

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 までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!