2013-01-15 22 views
2

据我所知,当InterruptedIOException被引入时,没有多少选择;它必须是IOException的子类Android或java.io方法抛出InterruptedIOException吗?

InterruptedIOException的唯一存在如果您想知道线程是否被中断,毫无疑问会使生活变得有点复杂。这是因为你必须对待InterruptedIOException不同,IOException如果要维护线程被中断的信息。

虽然InterruptedIOException的发明为的java.nio,有报道称,至少在Solaris下,有java.io方法,其抛出InterruptedIOException。此外,使用新的Android版本,有一种风险是库从java.io迁移到java.nio或其他方法得到某种映射。

我倾向于认为应该考虑InterruptedIOException以确保安全。你如何看待它?洞察力,经验,策略?

回答

1

我个人不会使用中断,如果你可以避免它。为了阻止IO操作,我会设置一个易失性标志并关闭流。如果已关闭标志已设置,则忽略抛出的任何IOException。这使您可以更好地控制组件关闭的方式。一旦我将组件设置为closed,我当然不会解除任何限制,我可以按照自己的喜好经常检查它。

+0

谢谢你的分享。但是,在某些情况下,使用'closed'信息结束一个线程似乎不可能以直接的方式进行。例如。如果你有一个旨在保持连接打开的线程(如果它必须关闭,则重新打开它)。 –

+0

如果在尝试重新连接之前应该检查'closed'标志。如果组件不这样做,它应该支持关闭/停止/关闭方法 –

+0

为真。谢谢!我现在既没有使用中断也没有完全关闭,但你对中断的评估使我朝着正确的方向前进。 –

相关问题