1

JavaとSwingのある点を見逃しているようです。問題は次のとおりです。

  • スタート/ストップボタン付きのスイングGUIがあります(その他)
  • 関数(この場合はスレッドとして設定されているもの)を開始し、スレッドを開始して機能します。SwingGUIは完全に機能し、ワーカースレッドのパラメーターの変更など、他のすべてのことを実行します。
  • もちろん、ユーザーの要求に応じてスレッドを停止するように要求する割り込みを送信することは機能しています。ここまでは順調ですね。

しかし、Swing GUIがスレッドが自動的に停止したことに気付く方法は見つかりませんでした。無視すると、ユーザーが混乱します。もちろん、私はループを入れます。ここで、Swing GUIは定期的にThread.isAliveかどうかを尋ねます(そして、もう一度尋ねるためにしばらくスリープします)が、このループはSwingGUIを完全にブロックします。理想的には、スレッドが停止したという通知またはイベントを受け取りたいです。他のすべてのイベントと同様に、Swingプロセス:-)。

それを設定する適切な方法は何ですか?

4

2 に答える 2

4

SwingWorkerをご覧ください。これは、ボタンを押すなどのSwingイベントの結果としてバックグラウンドでタスクを実行するように設計されています。タスクが終了したときにリッスンするフックがあります。

于 2013-02-15T21:28:55.727 に答える
0

ブール値フラグ「完了」プライベート フィールドを使用します。初期化完了= false; スレッド run() メソッドが完了したら、スレッド run() メソッド内で done=true に設定します。フラグ「done」の値を監視すると、スレッドがいつ終了したかがわかります。

于 2013-02-15T21:57:22.827 に答える