IO模型

IO模型主要分为同步阻塞和同步不阻塞io模型。同步阻塞的是BIO,同步不阻塞的有NIO,AIO,NIO优化了BIO模型中线程多,cpu开销大的问题,AIO解决了NIO编程复杂度的问题,但由于AIO出现的时间晚,较NIO普及度不高。除此之外,还有基于NIO实现的Netty的第三方通信框架。

1. BIO

像我们最先开始学习的socket编程就属于BIO模型。

特点:程序直观,简单,易理解。

架构图:

IO模型

2. NIO

nio在acceptor和线程的交互中增加了用于读写的Channel通道和用于监听Channel的Selector线程,通过把Channel注册到Selector,Selector便可以实现对Channel的监听和轮询。

nio采用Reactor模式来实现IO操作,Reactor模式是IO多路复用技术的一种常见模式,主要用于同步io.

理解和学会使用Selector是NIO的关键。

架构图:

IO模型

3. AIO

AIO相对于NIO来说,编程上更加简单,采用了Proactor模式实现IO操作。普及度较NIO低。

 

上一篇:InnoDB 存储引擎(6)——异步IO


下一篇:【架构师面试-Java编程基本功-4】-IO的区别与分类