我想中斷正在文件上運行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