問題タブ [illegalmonitorstateexcep]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
242 参照

java - コード内の IllegalMonitorStateException

IllegalMonitorStateExceptionこのコードでモニター例外が発生しています。私の理解によると、文字列配列オブジェクトである同期ブロックのためargs、現在のスレッドはロックを取得している必要があり、wait メソッドを使用してロックを解放しています。

誰かがこの例外の背後にある理由を説明できますか?

0 投票する
1 に答える
371 参照

java - その IllegalMonitorStateException... スレッドはオブジェクトを所有していませんか? ありえない、一つしかない

私はこのクラスを持っています。これは、ファイル ロック ユーティリティへの基本的なアプローチです (OS からのロックとは相互作用しません)。アイデアは、バイナリ セマフォでアプリケーションによって使用される File オブジェクトへの参照のペアを格納する静的な HashMap を持つことです。新しいファイルに最初にアクセスすると、ペアが変数に格納されます。問題は、.wait() 行が IllegalMonitorStateException をスローすることです。なぜなら、このクラスを 1 つのスレッドだけでテストするプロジェクトを作成したため、メソッドにアクセスするスレッドが所有していないということはあり得ないからです。オブジェクトですね。

私の意図は、メソッドが同期されていないことでしたが、この例外を受け取り始めたので、メソッドを同期に変更して、理論的にはそれらに入るスレッドが使用されるリソースを所有していることを確認しましたが、機能していません。同じ例外が発生します。

例外トレース :
org.lsp.io.files . org.lsp.main.Main.main(Main.java:9) の FileLocker.getLock(FileLocker.java:18 )


と呼ばれる

0 投票する
1 に答える
1068 参照

java - 同期ブロック内の IllegalMonitorStateException

同期ブロック内に待機を書きましたが。私は得てIllegalMonitorStateExceptionいます。では、その理由は何ですか?

0 投票する
2 に答える
1266 参照

java - グラフィックスを一時停止しますか?

だから私はこのJPanelグラフィックスコードを持っています:

for ループ (2 番目のループ) の中で、0.5 秒間一時停止したいので、各タイルが描画されているのがわかります。問題は、私が使用するときです

2 番目の for ループの後、すべてが永久に停止します。私が使用する場合

それはスパムを続けます

コンソールで。はい、try/catch で囲まれています。これを一時停止するにはどうすればよいですか?

0 投票する
1 に答える
5289 参照

java - 整数で同期すると、notify() で IllegalMonitorStateException が発生する

Java で wait() と notify() を使用するのは初めてで、IllegalMonitorStateException が発生しています。

メインコード

state.notify() が呼び出される IllegalMonitorStateException を取得しています。何か案は?

編集:以下の回答に基づいて、機能するコードがここにあります。補足として、私は最初に整数を使用するという同じ問題を抱えている列挙型でこれを試していました。

0 投票する
2 に答える
1128 参照

java - awaitTermination 関数での IllegalMonitorStateException

Java でのスレッドの使用に問題があります (Java でのスレッドの経験はほとんどありませんが、C++ では多くの経験があるため、スレッドの基本的な概念は理解しています)。Java のスレッドのサンプル コードを使用しました。コードは次のとおりです。

restartMachine()Runnable に渡されるデータは、特定のマシンの IP アドレスと、そのマシンでローカルに実行されているコマンドです。

このコードの実行時に発生するエラーは次のとおりです。

上記のコードから関数 awaitTermination() を呼び出すと、例外がスローされます。私が理解しているように、そして私が見たさまざまな例から、このコードに問題はないはずです。

トレースは、関数 mainLock.unlock() の呼び出しにエラーがあることを示しています。しかし、私が理解しているように、メインスレッドのみがその行を実行するので、なぜ IllegalMonitorStateException が発生するのかわかりません。また、プログラム内のスレッドに関する他のコードはありません (したがって、基本的にライブラリのコードのみを使用しています)。

この問題(この例外)に関してすでに多くの質問が回答されていることは知っていますが、ここで何が問題なのかわかりません。

0 投票する
1 に答える
33 参照

multithreading - IllegalMonitorStateException はいつスローされますか?

Object.wait()、Object.notify()、Object.notifyAll() メソッドが IllegalMonitorStateException をスローします。この例外は、現在のスレッドがこのオブジェクトのモニターの所有者でない場合にスローされます。しかし、オブジェクトのモニターの天気を取得せずに現在のスレッドを実行すると、任意のオブジェクトで wait / notify / notifyAll を実行できるという明確な情報が得られませんか? O/w 不正なモニターの状態の可能性は何ですか?

提案してくれたscottbに感謝します。Henno さん、返信ありがとうございます。私が得ているもう1つの疑問は、オブジェクトのモニターの所有者になることに関するものです:

スレッドは、次のいずれかの方法でオブジェクトのモニターの所有者になります。 •そのオブジェクトの同期インスタンス メソッドを実行する。オブジェクトで同期する同期ステートメントの本体を実行する。クラス型のオブジェクトの場合、そのクラスの同期された静的メソッドを実行します。

最初の 2 つのステートメントは理解されています。しかし、型 class のオブジェクトの基本は何でしょうか?

0 投票する
1 に答える
467 参照

java - IllegalMonitorStateException Java

私は、リソースの相互排除と同期を可能にするJavaでモニターを開発しなければならない大学のためにいくつかの仕事をしています。このモニターの頭脳は、プロセス間の同期を可能にするペトリネットでモデル化されたシステムです。このモニターには、ブロックされたプロセス (モニターにアクセスできなかったプロセス) のキューと、条件変数のキュー (このプロセスが同期されていない場合) が必要です。スレッドが (信号機によって) ブロックされると、ベクトルに保存され、FIFO ポリシーによって起動されます。この問題は、スレッドがモニターを終了しようとしているときに、1 つの IllegalMonitorStateException ベクトルでスリープ状態のスレッドをウェイクアップしようとして (通知 () のクラス SemaforoFIFO の Signal () メソッドで) 発生し、その理由がわからない場合に発生します。wait() と notify() についてよく読んでいましたが、解決策が見つかりません。問題は、私が主題と思考の両方を知らないことだと確信していますが、うまくいけば、この問題を理解して、将来私に役立つことができます. ありがとうございました。

私の英語を許してください。私はアルゼンチン出身で、Google 翻訳を使用しています。さよなら

以下にコードを示します。

クラス Vehiculo:ペトリネットでシュートの異なる遷移を処理するスレッドを初期化します (リソースと対話します)。これらは、すべてのトランジションを備えた配列を特徴としています。

Class Monitor:相互排除および同期プロセスを提供します。

クラス procesadorPetri:車両を撮影するトランジション番号を取得し、このショットの条件が存在するかどうかを検証します。条件が満たされない場合、スレッドはスリープする必要があります。それ以外の場合は、ショットが撮影され、システム ステータスが更新されます。

クラス varCondicional:プロセスの同期を提供します。

クラス semaforoFIFO:モニター内で相互排除を提供する責任があります。

これは、プログラムを実行したときに表示されるエラーです。

学級委員:

クラス varCondicionales:

クラス semaforoFIFO:

クラス車両:

クラス プロセッサPetri:

}

クラスメイン: