我创建了一个扩展 Thread 的类。
这个类定义了几个方法,其中一些使用 Process 和 IO 流来下载文件(有时需要几分钟)。
我还有一个用于停止线程的 JButton,它有一个 ActionListener,它当前执行 ClassName.this.stop(); 这完美地工作。
在“public void run()”方法中,我执行其中一些方法并启动线程。
我的问题是,如何用中断()替换我已弃用的 Thread.stop() 方法,并使用它干净地停止线程?
我看过一些解决方案,建议使用布尔标志来检查线程是否已被中断,但是看到 run() 方法只是执行了一系列方法,直到所有方法都执行完循环才会评估,即便如此,我得到一个“InterrupedException”,然后循环再次开始。
另一个问题是,如果正在下载,下载完成以及下一次检查线程是否已中断可能需要几分钟。我希望一切都停止并让对象“删除自身及其中的所有内容”,这就是 Thread.stop() 当前正在正确执行的操作。
有什么想法吗?