addShutdownHook()を使用してCtrl + Cを処理するSwingアプリケーションがあり、通常の状況でJLabelテキストを変更する関数を呼び出すシャットダウンタスクの1つまで正常に動作し、その時点でハングします。
問題は、Swing EDTが終了したか、何かを待っていることだと思います。
EDTが終了したか「完了」したかを判断する方法(Swingメソッドの呼び出しを回避できるようにするため)、またはCtrl-Cでの通常のウィンドウを閉じる動作を防ぐ方法はありますか?
明確にするために:
というクラスのメソッドがありstop()
ます。通常の状況では、これは(その補足とともにstart()
)呼び出される可能性があり、発生した視覚的なフィードバックのために、JLabelが更新される原因となる一連の事柄をトリガーしますstop()
。
シャットダウンフックが実行されたら、stop()
いくつかのリソースを正常にシャットダウンするために呼び出す必要があります。
私が求めているのは、Swing EDTが存在しないことをどのように検出できるかということです。そのためstop()
、Swingの欠如を検出し、Swing関数の呼び出しを回避するように書き直すことができます。