我想中断正在文件上运行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
好吧,也许我有点热情......它需要一个额外的变量和一个条件。和偶尔的任务。我正在寻找是否有另一种方式 – Meltea