我知道引入 InterruptedIOException 时没有多少选择;它必须是 IOException 的子类。
InterruptedIOException 的唯一存在无疑是让生活变得有点复杂,如果你想知道一个线程是否被中断。那是因为如果你想维护线程被中断的信息,你必须以不同于 IOException 的方式处理 InterruptedIOException 。
虽然 java.nio 发明了 InterruptedIOException ,但据报道至少在Solaris下,有 java.io 方法抛出 InterruptedIOException 。此外,对于新的Android版本,存在库从 java.io 迁移到 java.nio 或其他方法以某种方式映射的风险。
我倾向于认为应该考虑 InterruptedIOException 以确保安全。你怎么看?见解,经验,策略?
答案 0 :(得分:1)
就个人而言,如果可以避免,我不会使用中断。为了阻止IO操作,我将设置一个volatile标志并关闭流。如果已设置关闭标志,则忽略抛出的任何IOException。这使您可以更好地控制组件的关闭方式。一旦我将组件设置为closed
,我当然不会解开,我可以随意检查它。