ファイルに対してAES暗号化を実行しているスレッドを中断しようとしています。それはしばらく時間がかかりますが、これまで私はこれを考え出しました。Java - ビジースレッドを中断する方法
このボディは、ボタンをアクティブにするイベントの内側にあります。ユーザーがボタンをもう一度クリックすると(else節)。スレッドを中断する必要がありますが、スレッドを完全に停止できれば幸いです。しかし、これは推奨されていません。
とにかく、スレッドは.interrupt()を無視し、aes256Fileの実行を続けます。それはfileEncryptThread.isInterrupted()フラグを立てますが、CPU使用量から見るとまだファイルが壊れています。
私は、スレッドの安全停止のガイドを読んだが、私は完全にフラグを中断し、私の既に遅いAESの実装はクラスの外をチェックするために再設計する欲求...
fileEncryptThread = new FileThread() // new thread please
{
@Override
public void run()
{
String result = "";
result = MyCrypto.aes256File(enInPath,
enOutPath,
charsToString(passT.getPassword()),
sec);
if (!"".equals(result)) // error handling
{
JOptionPane.showMessageDialog(null,result);
}
}
};
fileEncryptThread.start();
}
else // if stop clicked
{
fileEncryptThread.interrupt();
あなたが使用しているインスタンスは、起動したインスタンスと同じではありませんか? – r0ast3d
完全に再設計する必要はありません。正直なところ、あなたのデザインがこのような単純な変更を処理できない場合は、とにかく新しいものが必要になります。 **適切なクラスデザインは簡単なことではなく、コーディングよりも重要である必要があります。** – corsiKa
まあ、多分私は少し熱心でした...余分な変数と1つの条件が必要になります。そして時折の割り当て。私は別の方法があるかどうかを調べています – Meltea