-1

特別なバグについて十分な情報を提供する必要があることはわかっています。しかし、それを再現することはできません。私は高度にマルチスレッド化されたプログラムを持っています。無限 while ループを持つスレッドがあります。プログラムのどの部分も、このスレッドに割り込むことはできません。できる限りチェックThread.currentThread().isInterrupted();しています。しかし、時々、Lable の setText メソッドで一部の型を Boolean に変換できないことを示す奇妙な例外スタック トレースでスレッドの実行が停止し、プログラムの次の行を指し示すことがあります。

JOptionPane.showMessageDialog(null, "action finished, going to the next!");

私は別の考え方をする必要があることを知っています!このスレッドで行われるテキストを設定するラベルがないためです。実際、プログラム全体で、GUI のテキストを変更することはありません。コンソールに書き込むだけです。何が問題になる可能性がありますか? コードのメモリ リークでしょうか、それとも Java のバグでしょうか?

4

1 に答える 1

3

showMessageDialogここでの問題は、直接呼び出す必要がないことだと思います。Swing は、すべての GUI 操作がメインの Swing スレッドを通過することを想定しており、この回答で報告されているように、ここでの問題は、スレッド (GUI に直接触れるべきではない) と Swing スレッド (つまり、これを処理することになっています)。

または を使用しshowMessageDialogて起動することを検討することをお勧めします。SwingWorkerinvokeLater

お役に立てれば!

于 2013-11-27T23:57:12.197 に答える