我终于设法在我的程序中实现了 Thread.interrupt() 而不是 Thread.stop()。然而,我不确定我是否做得很好。
我有一个扩展 Thread 并声明了几个方法的类。每个方法都被抛出 InterruptedException (每个方法都执行 I/O 密集型操作,其中一些需要几分钟才能完成,因此我没有使用线程安全标志,因为在操作完成之前不会检查标志) . 我还在这些方法中的几个地方添加了以下代码来引发异常:
if (this.isInterrupted()) throw new InterruptedException();
在 run() 方法中,我为 InterruptedException 执行 try/catch 中的所有方法。如果被捕获,我会为我的类变量执行 Process.destroy() 和 BufferedReader.close()。
这一切都有效,而且似乎效果很好,但是我有几个问题:
- 10多个方法都抛出InterruptedException是否正确?有一个更好的方法吗?
- 通过检查 isInterrupted() 来膨胀方法是否正确?
- 在 catch InterruptedException 块结束时,我是否必须执行“返回”或“空”某些值以使线程可用于 GC?如果我重新创建线程,它需要比平时更长的时间来初始化。
- 最后,是否有与我所做的相关的任何问题/增强功能?
在此先感谢您的帮助!