服务器实现模式为一个请求一个线程,但客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。
Java NIO(Non-blocking / New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API。
NIO 和 IO 的区别
NIO 和 IO 的区别在于,IO 是面向流,NIO 是面向缓存。
是一种同步非阻塞的I/O模型,也是I/O多路复用的基础,已经被越来越多地应用到大型应用服务器,
成为解决高并发与大量连接、I/O处理问题的有效方式。
传统面向流的,单向的。
三个核心组件
Channels
Buffers
Selectors
1.Channels 负责传输
白话: 就是数据传输用的通道。作用是打开到IO设备的连接,文件、套接字都行。
绕绕话: 标准的IO基于字节流和字符流进行操作的,而NIO是基于通道(Channel)和缓冲区(Buffer)进行操作,数据总是从通道读取到缓冲区中,或者从缓冲区写入到通道中。
2.Buffers 负责存储
缓冲区,用来存放具体要被传输的数据,比如文件、scoket 等。这里将数据装入 Buffers 再通过通道进行传输。
3.Selector
负责监听事件和选择对应事件的渠道。
网友评论