结构区别

BIO(Blocking IO):

基于流的IO操作。采用阻塞方式,每个连接都需要独立的线程进行处理。没有采用任何多路复用机制。 NIO(Non-blocking IO):

基于通道(Channel)和缓冲区(Buffer)的IO操作。非阻塞模式,单个线程可以处理多个连接(使用Selector进行多路复用)。支持选择器(Selector)用于监听多个通道的事件。 AIO(Asynchronous IO):

异步IO操作(基于回调或Future模式)。使用异步通道和完成处理器(Completion Handler)或Future对象进行操作。不需要使用多路复用器,操作系统完成后会主动通知应用程序。

其他区别 

特征BIONIOAIO类型同步且阻塞同步且非阻塞异步非阻塞服务器模型一个连接对应一个线程一个线程处理多个连接异步处理,回调机制适用场景连接数少,数据处理简单连接数多,数据量小连接数多,数据量大IO操作阻塞IO操作非阻塞IO操作,基于Selector多路复用基于事件和回调机制的异步IO操作实现方式Java IOJava NIOJava NIO.2(也称为AIO)缓冲区处理流式处理缓冲区处理缓冲区处理适合场景低并发、简单应用高并发、复杂应用、网络通信等高并发、长连接、大数据量

精彩链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: