码迷,mamicode.com
首页 > 编程语言 > 详细

JAVA 004 网络编程 BIO NIO AIO

时间:2018-12-13 22:15:59      阅读:258      评论:0      收藏:0      [点我收藏+]

标签:对比   字符流   内容   阻塞   技术   同步io   多线程   应用程序   网络   

目录(图片来自于网络)

  多路复用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

标签:对比   字符流   内容   阻塞   技术   同步io   多线程   应用程序   网络   

原文地址:https://www.cnblogs.com/hpzhu/p/10116689.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!