面试官:说一下NIO和BIO的区别

面试官:说一下NIO和BIO的区别_第1张图片

介绍

  1. BIO,面向流,只能读或者只能写,阻塞IO
  2. NIO,面向缓冲区,可以同时进行读写,非阻塞IO

面试官:说一下NIO和BIO的区别_第2张图片
整个BIO的继承关系如上图,每种流只能写或者读,整个BIO流的设计用了装饰者模式,如果你不清楚的话,可以看《面试官:说一下装饰者模式的作用,以及哪些地方用到了装饰者模式吧》,本文不再介绍

面试官:说一下NIO和BIO的区别_第3张图片
NIO涉及到的api主要为Buffer Channel Selector。Buffer可以用来存储和读取数据,Channel是网络通道,Selector主要用来监听事件的发生。后续的内容会简单介绍一下三者是如何协同工作的。

用例子类别一下

BIO:排队打饭
NIO:点餐等待被叫

api的使用我就不演示了,分析一下他们背后的开发模式

开发模式

类别 开发模式
BIO Thread-Per-Connection
NIO Reactor
AIO Pr

你可能感兴趣的:(Java面试通关100问)