传统IO与NIO比较

传统IO与NIO比较传统IO与NIO比较

注:第一幅为BIO,第二幅为NIO。NIO模拟图中,selector和大门还应有一条线(因为大门也要经过轮询)
传统IO特点
阻塞点
server.accept();
inputStream.read(bytes);
单线程情况下只能有一个客户端

用线程池可以有多个客户端连接,但是非常消耗性能

=======================分割线==========================
NIO的特点
ServerSocketChannel        -----          ServerSocket
SocketChannel                  ------          Socket
Selector
SelectionKey
NIO的一些疑问
1、selector.select();阻塞,那为什么说nio是非阻塞的IO?
 selector.select()
 selector.select(1000);不阻塞
 selector.wakeup();也可以唤醒selector
 selector.selectNow();也可以立马返还,视频里忘了讲了,哈,这里补上

2、SelectionKey.OP_WRITE是代表什么意思
OP_WRITE表示底层缓冲区是否有空间,是则响应返还true