NIO介绍
1、简介
BIO:同步阻塞式IO。
NIO:同步非阻塞IO,它是JDK1.4中提出的一套新的IO机制,区别与传统的BIO(Blocking IO)的同步阻塞工作方式。
- 阻塞、非阻塞:讨论的是线程的状态,当线程因某些原因被挂起,不能继续执行,不再争夺cup资源则称之为线程被阻塞住了。
- 同步、异步:从并发参与者角度考虑,多个参与者是否需要互相等待协调,如果任务的执行需要双方互相等待、互相协调,则为同步,否则为异步。
2、NIO需求背景
传统服务器结构,针对于每一个客户端都需要在服务器端创建对应线程来处理,一个客户端一个线程,而线程开辟运行是非常耗费资源的,并且服务器所能支持的最大并发线程数量是非常有限的,所以当高并发到来时,服务器一次创建过多线程,会存在性能瓶颈,甚至宕机。所以想到用少量的线程同时处理多个客户端的连接。
然而,在传统BIO中ACCEPT、CONNECT、READ、WRITE 方法会产生阻塞, 一旦阻塞住线程,该线程被挂起后就没有机会为其它客户端服务,所无法实现少量线程处理多个客户端。为了解决这些问题 ,NIO技术出现了。
3、特点
BIO:面向流操作字节字符,具有方向性,同步阻塞式IO。
- InputStream
- OutputStream
- Reader
- Writer
NIO:面向通道操作缓冲区,可以双向传输数据,同步非阻塞式IO。
- Channel
- Buffer
- Selector