Threadを拡張するクラスを作成しました。
このクラスにはいくつかのメソッドが定義されており、そのうちのいくつかはProcessストリームとIOストリームを使用してファイルをダウンロードします(場合によっては数分かかります)。
スレッドを停止するために使用するJButtonもあります。これには、現在ClassName.this.stop()を実行するActionListenerがあります。これは完全に機能します。
'public void run()'メソッド内で、これらのメソッドのいくつかを実行し、スレッドを開始します。
私の質問は、非推奨のThread.stop()メソッドをinterrupt()に置き換え、それを使用してスレッドをきれいに停止するにはどうすればよいですか?
ブールフラグを使用してスレッドが中断されているかどうかを確認することを推奨するいくつかのソリューションを見てきましたが、run()メソッドが一連のメソッドを実行するだけであるため、すべてのメソッドの実行が完了するまでループは評価されません。それでも、「InterrupedException」が発生し、ループが再開されます。
もう1つの問題は、ダウンロードが進行中の場合、ダウンロードが完了し、スレッドが中断されているかどうかを確認する次のチェックに数分かかる可能性があることです。すべてを停止し、オブジェクトが「それ自体とその中のすべてを削除する」ことを望んでいます。これは、Thread.stop()が現在正しく実行していることです。
誰かアイデアはありますか?