JAVA 004 网络编程 BIO NIO AIO
Posted hpzhu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA 004 网络编程 BIO NIO AIO相关的知识,希望对你有一定的参考价值。
目录(图片来自于网络)
多路复用Linux环境下底层机制
多路复用模式Reacotor和Proactor
BIO,NIO,AIO的简单介绍
多路复用Linux环境下底层机制
多路复用模式Reacotor和Proactor
Reactor和Proactor模式的主要区别就是真正的读取和写入操作是由谁来完成的
Reactor中需要应用程序自己读取或者写入数据
Proactor模式,应用程序不需要进行实际的读写过程,它只需要从缓存区读取或者写入即可,操作系统会读取缓存区或者写入缓存区到真正的IO的设备
Reactor(反应器模式)
说明你可以进行读写操作了,关注的是IO操作的就绪事件(采用同步IO)
Proactor
说明已经完成完成读写操作了,具体内存在给定缓存区中,可以对这些内容进行其它操作了,关注的是IO操作的完成事件(采用异步IO)
BIO,NIO,AIO的基本介绍
BIO -> 多线程 -> 线程池 -> NIO -> AIO
BIO基于字节流和字符流进行操作(每次从流中读一个或多个字节,直至读取所有字节,它们没有被缓存到任何地方)
NIO基于Channel(通道)和Buffer(缓冲)进行操作,数据总是从通道读取到缓冲区,或者从缓冲区写入到通道中,Selector用于监听多个通道的事件(连接打开,数据到达)
基本对比(涉及到连接数和线程数的概念,以及线程分配模型)
BIO 同步阻塞式IO 一个线程处理一个连接,发起和处理IO都是同步的
NIO 同步非阻塞IO 一个线程处理多个连接,发起IO请求是非阻塞的但处理IO请求是同步
AIO 异步非阻塞IO 一个有效请求一个线程,发起和处理IO请求都是异步的
各自的适应场景
BIO 连接数量小,连接时间段,计算密集
NIO 连接数目多且连接比较短(轻操作)的架构
AIO 连接数目多且连接比较长(重操作)的架构
以上是关于JAVA 004 网络编程 BIO NIO AIO的主要内容,如果未能解决你的问题,请参考以下文章