java aio 场景_Java中BIO、NIO、AIO的区别和应用场景
发布日期:2021-06-24 15:50:52
浏览次数:4
分类:技术文章
本文共 613 字,大约阅读时间需要 2 分钟。
学习IO,首先要明白四个东西。
1.同步
java自己去处理io。
2.异步
java将io交给操作系统去处理,告诉缓存区大小,处理完成回调。
3.阻塞
使用阻塞IO时,Java调用会一直阻塞到读写完成才返回。
4.非阻塞
使用非阻塞IO时,如果不能立马读写,Java调用会马上返回,当IO事件分发器通知可读写时在进行读写,不断循环直到读写完成。
1.BIO:同步并阻塞,服务器的实现模式是一个连接一个线程,这样的模式很明显的一个缺陷是:由于客户端连接数与服务器线程数成正比关系,可能造成不必要的线程开销,严重的还将导致服务器内存溢出。当然,这种情况可以通过线程池机制改善,但并不能从本质上消除这个弊端。
2.NIO:在JDK1.4以前,Java的IO模型一直是BIO,但从JDK1.4开始,JDK引入的新的IO模型NIO,它是同步非阻塞的。而服务器的实现模式是多个请求一个线程,即请求会注册到多路复用器Selector上,多路复用器轮询到连接有IO请求时才启动一个线程处理。
3.AIO:JDK1.7发布了NIO2.0,这就是真正意义上的异步非阻塞,服务器的实现模式为多个有效请求一个线程,客户端的IO请求都是由OS先完成再通知服务器应用去启动线程处理(回调)。
应用场景:并发连接数不多时采用BIO,因为它编程和调试都非常简单,但如果涉及到高并发的情况,应选择NIO或AIO,更好的建议是采用成熟的网络通信框架Netty。
转载地址:https://blog.csdn.net/weixin_33642922/article/details/114353718 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月22日 22时16分03秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
python在windows和linux环境的进程支持对比
2019-04-28
激活函数(激励函数)理解总结
2019-04-28
池化层的作用
2019-04-28
检测视频或摄像头中的目标
2019-04-28
Python非线性回归-武汉疫情确诊、疑似、死亡、治愈人数预测
2019-04-28
Unet结构原理
2019-04-28
【语义分割】批量制作多类语义分割数据集
2019-04-28
循环神经网络RNN与LSTM--基础知识
2019-04-28
00Python预习
2019-04-28
01Python字符串/列表/元组
2019-04-28
03Python函数/对象的方法
2019-04-28
02布尔表达式/条件判断
2019-04-28
04格式化字符串与循环+注释
2019-04-28
05文件的读写+字典
2019-04-28
思考题1:根据日志计算同类型文件的大小
2019-04-28
思考题2:根据数据库记录,输出学生课程签到记录
2019-04-28
本地服务通过Feign无法与docker内容器通讯问题
2019-04-28
在线安装docker,docker拉取jdk与mysql镜像
2019-04-28
Spingboot Resttemplate连接池配置
2019-04-28
跨平台第三方平台登录和单点登录
2019-04-28