0

だから私はswingアプリケーションを持っています。ボタンを押すと、ワーカースレッドが起動します。メイン ウィンドウを閉じても、JVM は引き続き実行され、ワー​​カー スレッドは中断されることなく無期限に継続します。ウィンドウが閉じられたときにワーカースレッドを終了させたい。

4

2 に答える 2

1

デーモン以外のすべてのスレッドが終了すると、JVM は終了します。ワーカー スレッドはデーモンではないため、JVM を終了できません。ワーカースレッドをデーモンにするだけです:

workerThread.setDaemon(true);

もう 1 つの方法はinterrupt()、メイン ウィンドウを閉じるときにスレッドにアクセスすることですが、それには と の処理が必要isInterrupted()ですInterruptedException

于 2012-08-25T18:59:40.787 に答える
1

ウィンドウが閉じられたときにアプリケーション全体を終了させたい場合は、これを使用できます。

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

ワーカースレッドのみを停止し、他のことをしたい場合。フレームに WindowListener を登録し、onWindowClosing コールバックでイベント タイプを確認して、必要なことを行うことができます。

于 2012-08-25T19:03:08.727 に答える