Java语言规范包含Java内存模型规范。在JLS 1.7.4.4, "Synchronization Order"中,以下是关于中断线程的说法:
如果线程
T1
中断了线程T2
,那么T1
的中断 与同步 - 任何其他线程(包括T2
)的任何点 确定T2
已被中断(通过拥有InterruptedException
抛出或调用Thread.interrupted
或。{Thread.isInterrupted
)。
“确定T2
是否已被中断”包括“被InterruptedIOException
抛出”?
第一句话的语言暗示它确实如此。但随后括号内的文字表明它详尽地列出了如何确定线程是否被中断,InterruptedIOException
不在该列表中。
如果答案可以通过提及官方澄清或JMM的一位作者的引用来支持,那将是很好的。