博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java aio 场景_Java中BIO、NIO、AIO的区别和应用场景
阅读量:1540 次
发布时间:2019-04-21

本文共 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。

转载地址:http://erhdy.baihongyu.com/

你可能感兴趣的文章
如果没有PCB设计
查看>>
无MCU实现按键电平保持的电路,手把手带你精准分析电流走向
查看>>
为什么Y电容容量基本都不大于0.1uF?
查看>>
Linux 内核 / 进程管理 / 如何描述一个进程?
查看>>
单精度、双精度、多精度和混合精度计算的区别是什么?
查看>>
各种常用电子元器件的识别方法
查看>>
科普 | 到底什么是鸿蒙 OS
查看>>
C语言printf()函数具体解释和安全隐患
查看>>
精选汇总 | 嵌入式软硬件综合内容
查看>>
精选汇总 | 软件工具、 编译器、 编辑器
查看>>
全面解读操作系统中的内存管理,你懂几点?
查看>>
上世纪多个奇葩发明与设计
查看>>
同步整流和非同步整流有什么区别?
查看>>
PCB上10A的电流需要走多宽的线?需要几个过孔?
查看>>
波士顿动力又被低价卖出,背后有哪些不为人知的故事
查看>>
两个线程,两个互斥锁,怎么形成一个死循环?
查看>>
防止PCB会过期,以及过期后的处理办法
查看>>
基于FPGA数字门电路的实现
查看>>
DIY | 电路与艺术相结合
查看>>
电子、通信十大定律
查看>>