异步非阻塞I/O
JDK 1.4的NIO框架经常被称为异步非阻塞I/O,但是,如果严格按照UNIX网络编程模型和JDK的实现进行区分,实际上它只能被称为非阻塞I/O,不能叫异步非阻塞I/O。
JDK 1.4和1.5 update10版本之前,JDK的Selector是基于select/poll模型实现的,它是基于I/O复用技术的非阻塞I/O,不是异步I/O。
在JDK 1.5 update10和Linux core2.6以上版本,Sun优化了Selctor的实现,它在底层使用epoll替换了select/poll,上层的API并没有变化,可以认为是JDK NIO的一次性能优化,但是它仍旧没有改变I/O的模型。
JDK1.7的NIO 2.0新增了异步的套接字通道,它是真正的异步I/O,在异步I/O操作的时候可以传递信号变量,当操作完成之后会回调相关的方法,异步I/O也被称为AIO。
NIO类库支持非阻塞读和写操作,相比于之前的同步阻塞读和写,它是异步的,因此很多人习惯于称NIO为异步非阻塞I/O。
多路复用器Selector
Java NIO1的实现关键是多路复用I/O技术,多路复用的核心是通过Selector来轮询注册在其上的Channel,当发现某个或者多个Channel处于就绪状态后,从阻塞状态返回就绪的Channel的选择键集合,进行I/O操作。
由于多路复用器是NIO实现非阻塞I/O的关键,它又是主要通过Selector实现的,所以将Selector翻译为多路复用器更合适。
伪异步I/O
伪异步I/O的概念完全来源于实践。
在JDK NIO编程没有流行
本文探讨了Java NIO(非阻塞I/O)的异步性,并指出JDK 1.7的NIO 2.0引入了真正的异步I/O。Netty因其健壮性、功能、性能和易用性成为Java NIO编程的首选框架。Netty解决了原生NIO的复杂性、BUG和可靠性问题,提供了强大的预置编解码器和高度可定制性。
最低0.47元/天 解锁文章
6532

被折叠的 条评论
为什么被折叠?



