Netty权威指南(第2版) 6.9分
读书笔记 2.3 NIO编程
Gimo

NIO Non-block I/O 非阻塞I/O 与Socket和ServerSocket相对应,NIO也提供了SocketChannel和ServerSocketChannel。 都支持阻塞和非阻塞两种模式。 1. 缓冲区Buffer Buffer是一个对象,它包含了一些要写入或者要读出的数据。任何时候访问NIO中的数据,都是通过缓冲区进行操作。 缓冲区实质上是一个数组。 最常用的缓冲区是ByteBuffer,另外还有CharBuffer、ShortBuffer…… 2. 通道Channel 两大类:用于网络读写的SelectableChannel和用于文件操作的FileChannel。 ServerSocketChannel和SocketChannel都是SelectableChannel的子类。 3. 多路复用器Selector JavaNIO编程的基础。提供选择已经就绪的任务的能力。Selector会不断轮询注册在其上的Channel,如果某个Channel有动作,这个Channel就会处于就绪状态,会被Selector轮询出来,然后通过SelectionKey获取就绪Channel的集合,进行后续的I/O操作。 只需要一个线程负责Selector轮询,就可以接入成千上万的客户端。 2.3.2 NIO服务端序列图 -- 代码很混乱,而且有错的地方,有些变量也没有说明。 2.3.3 NIO创建的TimeServer源码分析 -- NIO比BIO就是多了buffer、Channel和Selector,而且只需要一个线程可以负责所有客户端,也就是非阻塞。

0
《Netty权威指南(第2版)》的全部笔记 23篇
豆瓣
我们的精神角落
免费下载 iOS / Android 版客户端