質問: exception occurred during event dispatching こんにちは。 jbuilderでappletを作成しています。 wait()とnotify()をプログラム中で利用したところ, 次のようなメッセージが出ました。 exception occurred during event dispatching: java.lang.illegalmonitorstateexception: current thread not owner 具体的にどのようなことを意味しているのかわかりません。 どなたか教えて下さい。お願いします。
回答: >が,appletが動作しなくなったり等の結果に おそらく、 wait()を呼ぶことにより(アプレットのイベント処理全般を担当している)イベント処理スレッド(event-dispatching thread)が停止したので、 アプレットがウンともスンとも言わなくなった。 (ボタンを押そうがウインドウのクローズボタンを押そうが反応しない) >描画させる為の値を渡さない時に,描画をさせないように,したい 「描画一時停止」だけのために「wait()/notify()」を使うのは、なんか不自然。 ふつうは使わないと思う。 (※本に載ってるサンプルなどをみても、そういう使いかたではないはず) 「wait()/notify()」は使いかたも難しいので、 「使う必要がないのなら使わない」ほうがいいと思う。 単に「描画一時停止」させたいのなら、代替案を考えよう。 /**代替案1*/ public void paint(graphics g) { /*「ある条件」が成立したときのみ描画処理を行う*/ if (/*ある条件*/) { ... ... ... } else { //なにもしない } } /**代替案2*/ public void actionperformed(actionevent e) { /*「ある条件」が成立したときのみrepaint()を呼ぶ*/ if (/*ある条件*/) { canvas.repaint(); } else { //なにもしない } }