java aio 场景_Java中BIO、NIO、AIO的区别和应用场景
发布日期:2021-06-24 15:50:52
浏览次数:3
分类:技术文章
本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
感谢大佬
[***.8.128.20]2024年04月11日 10时54分55秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
级联 SIFT
2019-04-28
PCL显示点云-ICP(PCL1.9.1)
2019-04-28
opencv-特征描述符评估
2019-04-28
马佳义博士的工作
2019-04-28
Ubuntu点云开发环境
2019-04-28
IPOL Journal · Image Processing On Line代码期刊
2019-04-28
卫星图像的三维重建[下载地址记录]
2019-04-28
cuda+VS2015配置-----cuda+ubuntu配置-
2019-04-28
caffe-ssd环境-cuda9.0-Ubuntu16.04-gcc5.4.0
2019-04-28
服务器端查看图片库 eog display Xforwarding
2019-04-28
画出SIFT高斯金字塔和DOG金字塔
2019-04-28
ASIFT-Python-ICP
2019-04-28
点云配准(拼接注册)论文记录
2019-04-28
带有代码的论文
2019-04-28
C++获取文件路径下的所有jpg文件--分割string
2019-04-28
约克大学论文-直线检测
2019-04-28