博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA IO BIO NIO AIO
阅读量:6289 次
发布时间:2019-06-22

本文共 642 字,大约阅读时间需要 2 分钟。

一、什么是IO

IO 输入、输出 (read write accept)IO是面向流的

二、BIO

BIO是同步阻塞式IO 服务端与客户端进行三次握手后一个链路建立一个线程面向流的通信在单线程模式下只能为一个客户端服务  可以采用建立线程池来创建多个服务 然而这样建立多个线程是对性能消耗非常大的 while(true){ socket = accept();//阻塞等待client连接,直到client连接成功。 handle(socket) }

三、NIO

同步非阻塞式IO 以块的方式处理数据 面向缓存区的 采用多路复用Reactor模式 基于事件驱动Netty是实现了NIO的一个流行框架,JBoss的。Apache的同类产品叫Mina。阿里云分布式文件系统TFS里用的就是Mina。

150046-20170901082719280-29887948.png

四、AIO

异步非阻塞式IO 基于unix事件驱动,不需要多路复用器对注册通道进行轮询,采用Proactor设计模式。

五、什么是多路复用

所谓的多路复用是指 多路是多个网络连接 复用是复用同一个线程 在同一个线程里面 通过拨开关的方式,来同时传输多个I/O流 经典的像Nginx是一个多进程单线程的模型

22312037_13832287181u34.png

Nginx会有多个连接进来 epoll会把他们监视起来 谁有请求就拨向谁然后调用响应的代码处理

43136-20170319171538682-1895749865.jpg


参考文章:

http://www.iteye.com/magazines/132-Java-NIOhttps://www.cnblogs.com/xiexj/p/6874654.html
你可能感兴趣的文章
AppScan使用
查看>>
Java NIO框架Netty教程(三) 字符串消息收发(转)
查看>>
Ucenter 会员同步登录通讯原理
查看>>
php--------获取当前时间、时间戳
查看>>
Spring MVC中文文档翻译发布
查看>>
docker centos环境部署tomcat
查看>>
JavaScript 基础(九): 条件 语句
查看>>
Linux系统固定IP配置
查看>>
配置Quartz
查看>>
Linux 线程实现机制分析
查看>>
继承自ActionBarActivity的activity的activity theme问题
查看>>
设计模式01:简单工厂模式
查看>>
项目经理笔记一
查看>>
Hibernate一对一外键双向关联
查看>>
mac pro 入手,php环境配置总结
查看>>
MyBatis-Plus | 最简单的查询操作教程(Lambda)
查看>>
rpmfusion 的国内大学 NEU 源配置
查看>>
spring jpa 配置详解
查看>>
IOE,为什么去IOE?
查看>>
Storm中的Worker
查看>>