NOTE
3.6 NIO实现的服务器
NIO vs BIO BIO NIO --- --- --- ServerSocket ServerSocketChannel Socket SocketChannel Selector SelectionKey 常见问题 客户端关闭的时候抛出异常,死循环 原因是没有判断 channel.read(
这是历史学习笔记,可能存在过时或不完整的理解。

NIO vs BIO
| BIO | NIO | |
|---|---|---|
| ServerSocket ServerSocketChannel | ||
| Socket | SocketChannel | |
| Selector | ||
| SelectionKey |
常见问题
客户端关闭的时候抛出异常,死循环
原因是没有判断channel.read(buffer)的返回值是否为-1,-1则表示客户端关闭了连接,不能继续读取了
selector.select阻塞为什么说NIO是非阻塞的
selector.select//阻塞
selector.select(1000)//不阻塞
selector.wakeup//唤醒selector
SelectionKey.OP_WRITE是什么意思
表示底层缓冲区有空间可写