NIO讲解

  • Post author:
  • Post category:其他


由于已经在processOn上画好了图以及注释了解析,那么我就直接上图好了,由于画得有点大,有些文字截不了,那么我就直接将文字ctrl +C 、Ctrl+V 到这里来好了。

在这里插入图片描述


每一次连接都需要三个socket:


①serverSocketChannel:用于接收客户端的连接

②客户端的socketChannel:用于通讯服务端的连接

③服务端接收到客户端连接时所创建的socketChannel:用于通讯客户端的连接


当socketChannel在使用缓冲区byteBuffer的时候,要注意:


①read方法相当于是对byteBuffer的写入—即put

②write方法相当于是对byteBuffer的读取—即get


所涉及的集合


all-keys集合 —— 当前所有向Selector注册的SelectionKey的集合,Selector的keys()方法返回该集合

selected-keys集合 —— 相关事件已经被Selector捕获的SelectionKey的集合,Selector的selectedKeys()方法返回该集合

cancelled-keys集合 —— 已经被取消的SelectionKey的集合,Selector没有提供访问这种集合的方法

NIO的出现就是为了解决BIO阻塞的问题,所以也是会有单线程和多线程。



单线程的时候

在这里插入图片描述



多线程的时候

在这里插入图片描述



版权声明:本文为gwokgwok137原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。