IO模型主要分为同步阻塞和同步不阻塞io模型。同步阻塞的是BIO,同步不阻塞的有NIO,AIO,NIO优化了BIO模型中线程多,cpu开销大的问题,AIO解决了NIO编程复杂度的问题,但由于AIO出现的时间晚,较NIO普及度不高。除此之外,还有基于NIO实现的Netty的第三方通信框架。
1. BIO
像我们最先开始学习的socket编程就属于BIO模型。
特点:程序直观,简单,易理解。
架构图:
2. NIO
nio在acceptor和线程的交互中增加了用于读写的Channel通道和用于监听Channel的Selector线程,通过把Channel注册到Selector,Selector便可以实现对Channel的监听和轮询。
nio采用Reactor模式来实现IO操作,Reactor模式是IO多路复用技术的一种常见模式,主要用于同步io.
理解和学会使用Selector是NIO的关键。
架构图:
3. AIO
AIO相对于NIO来说,编程上更加简单,采用了Proactor模式实现IO操作。普及度较NIO低。