Java网络编程

5. NIO

2019-07-18  本文已影响0人  童伯虎

NIO是Java提供的非阻塞I/O库。

NIO库由三部分组成:

NIO库中的I/O操作从Channel开始,Channel代表与外部设备(文件、套接字等)的一个连接,通过它读取和写入数据(全双工)。

NIO库中的所有数据都通过Buffer处理。读取数据时,先从Channel读取到Buffer,再通过Buffer操作数据;写入数据时,先写入到Buffer中,再通过Buffer写到Channel。

BIO下,I/O操作是阻塞的,一个连接占用一个线程,而线程是稀缺资源,导致能够同时处理的连接数有限。因此,BIO只适合连接数少的情况。NIO库使用I/O多路复用技术处理多连接轻操作场景。

首先创建一个多路复用器Selector,然后将Channel注册到Selector上,Selector会给每个Channel分配一个凭证SelectionKey。使用Selector#select()方法循环检测各Channel上是否有事件(可接受连接、可发起连接、可读、可写)就绪,返回有就绪事件的SelectionKey列表,从SelectionKey获取Channel和事件,进行I/O操作。

上一篇 下一篇

猜你喜欢

热点阅读