网络编程--BIO、NIO、AIO和Netty的理解
参考:https://blog.csdn.net/weixin_43122090/article/details/105462088
了解不同的IO之前先了解:同步与异步,阻塞与非阻塞的区别
- 同步,一个任务的完成之前不能做其他操作,必须等待(等于在打电话)
- 异步,一个任务的完成之前,可以进行其他操作(等于在聊QQ)
- 阻塞,是相对于CPU来说的, 挂起当前线程,不能做其他操作只能等待
- 非阻塞,,无须挂起当前线程,可以去执行其他操作
什么是BIO
BIO:同步并阻塞,服务器实现一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,没处理完之前此线程不能做其他操作(如果是单线程的情况下,我传输的文件很大呢?),当然可以通过线程池机制改善。BIO方式适用于连接数目比较小且固定的架构,这种方式对服务器资源要求比较高,并发局限于应用中,JDK1.4以前的唯一选择,但程序直观简单易理解。
什么是NIO
NIO:同步非阻塞,服务器实现一个连接一个线程,即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。NIO方式适用于连接数目多且连接比较短(轻操作)的架构,比如聊天服务器,并发局限于应用中,编程比较复杂,JDK1.4之后开始支持。
什么是AIO
AIO:异步非阻塞,服务器实现模式为一个有效请求一个线程,客户端的I/O请求都是由操作系统先完成了再通知服务器应用去启动线程进行处理,AIO方式使用于连接数目多且连接比较长(重操作)的架构,比如相册服务器,充分调用操作系统参与并发操作,编程比较复杂,JDK1.7之后开始支持。.
AIO属于NIO包中的类实现,其实IO主要分为BIO和NIO,AIO只是附加品,解决IO不能异步的实现
在以前很少有Linux系统支持AIO,Windows的IOCP就是该AIO模型。但是现在的服务器一般都是支持AIO操作
异步理解图:
同步:一个请求,等待一个响应
异步:不用等待这个响应,就可以去干其他的事情
想ajax的异步刷新一样:就是他自己有一个回调,在处理时,接收的线程会新跑一个回调去处理,就是异步处理了,这样就可以再等待下一个请求,不用自己等待响应了;
Netty的理解:底层是tcp/ip协议,然后上面包了层jdk的原生网络/IO开发实现,然后再上面又包了一个nio的io网络开发,最后就是Netty了!
Netty是一个异步的,基于事件驱动的网络应用框架,用于快速开发高性能,高可靠的网络IO程序。
事件驱动:
netty的事件:连接,断开,读写事件等!
同步异步和阻塞非阻塞的区别:
同步异步:是一个线程对应几个通道:就是在做这件事时,由选择器判断是否可以做了,如果没到,就可以做其他的事;
阻塞非阻塞:讲的是线程内部自身的线程运行状态是阻塞的还是非阻塞的,是线程生命周期!
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhfhhfej
-
第二十二篇Java NIO重点
-
Elasticsearch8 解决启动报错fatal exception while booting Elasticsearchjava.nio.file.InvalidPathException
-
Android 编译jar异常AGPBI: {“kind“:“error“,“text“:“java.nio.file.NoSuchFileException: C:\\Program Files
-
网络通信编程基础,BIO,NIO
-
Java基础:《netty3—NIO:Buffer》
-
java网络和IOBIO/NIO面试题,从Linux底层告诉你为什么Java这么设计----持续补充
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13