NIO介绍

2022-04-25 14:18:55 浏览数 (1)

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

0 人点赞