IO面试题

题目

讲讲 NIO 和 BIO 的区别。

答案

BIO(同步阻塞)

  1. BIO 是传统的 IO 模式,客户端向服务器端发起请求的时候,如果服务端没有处理完成,就会一直等待,等服务端处理完成之后会将响应返回给客户端。
  2. 每次请求都会生成一个线程去处理。
  3. BIO 是面向流的。

NIO(同步非阻塞)

  1. NIO 向服务端发起请求,如果没有响应会立即返回,然后重新请求,直到获取到数据为止。
  2. NIO 创建连接后这个连接会被注册到多路复用器上面。通过 Selector 来获取数据。
  3. NIO 是面向缓冲区的。