总结
- 实现InterruptibleChannel接口表明该通道是可以异步关闭和中断的通道
- 实现此接口的通道是异步关闭的:如果一个线程在可中断通道InterruptibleChannel上的I/O操作中被阻塞,那么另一个线程可以调用通道的close方法。 这将导致被阻塞的线程接收AsynchronousCloseException
- 实现此接口的通道也是可中断的:如果一个线程在可中断通道上的I/O操作中被阻塞,那么另一个线程可以调用被阻塞线程的Thread#interrupt()方法。这将导致通道关闭,阻塞线程接收ClosedByInterruptException,并设置阻塞线程的中断状态
- 如果线程的中断状态已经设置,并且它在通道上调用阻塞I/O操作, 那么通道将关闭,线程将立即收到 ClosedByInterruptException,其中断状态不会被清除
- 当且仅当通道实现此接口时,通道支持异步关闭和中断。如有必要,可以在运行时通过instanceof操作符对其进行测试。
InterruptibleChannel接口方法
方法名 | 作用 |
---|---|
void close() | 关闭此通道,此通道上当前在I/O操作中被阻塞的任何线程都将收到一个AsynchronousCloseException |