A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© pumpkin 中级黑马   /  2015-12-8 11:17  /  574 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1. 只有面向
流的(stream-oriented)的通道,如sockets和pipes才能使用非阻塞模式。

2. 关闭通道
在一个通道上多次调用close( )方法是没有坏处的,但是如果第一个线程在close( )方法中阻
塞,那么在它完成关闭通道之前,任何其他调用close( )方法都会阻塞。后续在该已关闭的通道上调
用close( )不会产生任何操作,只会立即返回。


如果一个通道实现InterruptibleChannel接口,它的行为以下述语义为准:如果一个线程在一个通道上被阻塞并且同时被中断(由调用该被阻塞线程的interrupt( )方法的另一个线程中断),那么该通道将被关闭,该被阻塞线程也会产生一个ClosedByInterruptException异常。

可中断的通道也是可以异步关闭的。实现InterruptibleChannel接口的通道可以在任何时候被关闭,即使有另一个被阻塞的线程在等待该通道上的一个I/O操作完成。当一个通道被关闭时,休眠在该通道上的所有线程都将被唤醒并接收到一个AsynchronousCloseException异常。

3. file channel 的内存映射机制,可以了解一下相关的底层内容

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马