NIO与AIO

NIO与AIO

NIO模型

2024-03-26T13:34:50-wljrvr.png

在 LInux 环境中,java.nio.channels.Selector 的子类叫做 sun.nio.ch.EPollSelectorImpl ,其底 层是基于 Epoll 模型去实现的 IO 多路复用器。

对于 Epoll 模型 我们需要了解到它底层的三个函数

2024-03-26T13:20:39-mswtop.png

在 JDK 实现的底层中,EPollSelectorImpl 在初次创建的时候,会调用 create 函数去内存块中 开辟一块空间。然后再调用 ctl 方法,往这个内存块中创建一颗红黑树,并且将 socket 对象插 入到树上。然后再调用 wait 方法,让出 CPU。

整体的执行过程如下图所示:

2024-03-26T13:49:14-niqxih.png

AIO模型

AIO(Asynchronous I/O)

  • AIO是Java 1.7引入的,它提供了更高级别的异步I/O操作。
  • AIO的主要特点是在进行I/O操作时不需要阻塞线程,当I/O操作完成后会通过回调函数通知程序,从而实现异步处理。
  • 相比于NIO,AIO更加方便,因为它把I/O操作的处理逻辑封装到了回调函数中,程序员不需要手动管理缓冲区和通道。

2024-03-26T13:50:04-oyfgms.png

为什么 Netty 没有使用 AIO 而是采用 NIO 的思路去进行设计?

创始人在GitHub中的回答

2024-03-26T13:57:06-vnznob.png

翻译:
不比unix系统上的NIO(epoll)快(这是真的)
没有daragram支持
不必要的线程模型(过多的抽象而没有使用)

总而言之,可以理解为,在 Unix 系统上 AIO 性能综合表现不如 NIO 好,所以 Netty 使用了 NIO 作为底层的核心。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/492303.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

由浅到深认识Java语言(27):异常

该文章Github地址:https://github.com/AntonyCheng/java-notes 在此介绍一下作者开源的SpringBoot项目初始化模板(Github仓库地址:https://github.com/AntonyCheng/spring-boot-init-template & CSDN文章地址:https://blog.c…

mysql如何存Emoji表情

如何存Emoji表情 背景解决方案一: 如果是自己搭建的数据库,参考如下。 1:先创建数据库,utf8编码2: 修改mysql 的配置文件 /etc/my.cnf 文件3:然后把你的表和字段也要支持utf8md4编码4:修改你连…

分页功能制作

使用HTML,css,js和json假数据制作分页功能。 以下为分页功能结构,下面可以点击上一页,下一页及数字,还可以自己输入想要跳转的页面点击跳转。下面每页显示的内容也会跟着改变。还可以选择不同的每页显示数据的条数。默…

备考ICA----Istio实验11---为多个主机配置TLS Istio Ingress Gateway实验

备考ICA----Istio实验11—为多个主机配置TLS Istio Ingress Gateway实验 1. 部署应用 kubectl apply -f istio/samples/helloworld/helloworld.yaml -l servicehelloworld kubectl apply -f istio/samples/helloworld/helloworld.yaml -l versionv12. 证书准备 接上一个实验…

【孙子级介绍语言模型的原理,实战和评估】

🔥博主:程序员不想YY啊🔥 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家💫 🤗点赞🎈收藏⭐再看💫养成习惯 🌈希望本文对您有所裨益,如有…

超级爆火项目 壁纸取图小程序源码系统 带完整的安装代码包以及安装部署教程

在当今数字化时代,手机壁纸已经成为人们展示个性和品味的重要载体。为了满足广大用户对精美壁纸的需求,小编给大家分享一款超级爆火的“壁纸取图小程序源码系统”。该系统不仅提供了完整的安装代码包,还附带了详尽的安装部署教程,…

2024大广赛设计趋势揭秘:助你称霸比赛!

2024大广赛火热进行中,今天就与大家分享几个当下最流行的设计趋势,希望这些流行的设计趋势助你一举夺魁,他们是适老化设计、电商类设计、车机主题设计与游戏类主题设计,大赛当前,不看说不过去哦~ 适老化设计 适老化设…

【LINUX笔记】汇编-裸机开发

裸机开发 chmod 777 imxdownload //给予 imxdownload 可执行权限,一次即可 ./imxdownload backlight.bin /dev/sdd //烧写到 SD 卡中, 不能烧写到/dev/sda 或 sda1 里面!汇编笔记 启动方式

如何利用生成式人工智能挑选合适的候选人?

在当今激烈的商业竞争中,招聘合适的人才是构建企业成功的基石。筛选和面试候选人是一个复杂且精细的过程,它不仅关系到职位的有效填补,更影响到企业的长期发展和团队建设。 选择合适候选人的重要性 选择合适的候选人就像寻找一片沙滩上的珍…

俄罗斯市场免费开发方法及工具分享

俄罗斯市场大家最近很多人都在开发,尤其是去年的时候,非常的火爆,今年因为俄罗斯被追加了新一轮的制裁,可能收款方面有点问题,但是市场还是非常火热的,今天给大家分享一些俄罗斯市场免费开发方法以及工具。…

ELF 1技术贴|应用层更改引脚复用的方法

在嵌入式系统设计中,引脚复用功能通常是通过设备树(Device Tree)预先配置设定的。出厂的设备树中UART2_TX_DATA和UART2_RX_DATA两个引脚被复用成了UART2功能,如果想要在不更换系统镜像的情况下,将这两个引脚的功能转换为GPIO,并作…

Java项目:76 Springboot学生读书笔记共享

作者主页:舒克日记 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 本文从管理员、用户的功能要求出发, 读书笔记共享平台系统中的功能模块主要是实现管理员;首页、个人中心、用户管理、笔记分享…

C语言调用云端 Python接口

利用C语言调用阿里云Python接口,来实现垃圾的智能识别 文章目录 利用C语言调用阿里云Python接口,来实现垃圾的智能识别1、如何开启阿里云服务2、实验程序介绍2.1 py程序改造2.2 c语言调用py2.3 测试代码 3、实验结果 1、如何开启阿里云服务 大家可以自行…

【C++】从C到C++、从面向过程到面向对象(类与对象)

文章目录 C入门知识C与C的关系1. 类的引入:从结构体到类2. 类的声明和定义3. 类的作用域4. 类的访问限定符5. 面向对象特性之一:封装6. 类的实例化:对象7. 计算类对象的内存大小8. 成员函数中暗藏的this指针9. 类的六个默认生成的成员函数9.1…

NVIDIA 发布 Project GR00T 人形机器人基础模型和 Isaac 机器人平台重大更新

系列文章目录 前言 Isaac 机器人平台现可为开发者提供全新的机器人训练仿真器、Jetson Thor 机器人计算机、生成式 AI 基础模型和由 CUDA 加速的感知和操作库。 Project GR00T 是一种多模态人形机器人通用基础模型,作为机器人的大脑,使它们能够学习技能…

【Redis安装】Ubuntu下Redis编译安装

Redis编译安装 文档说明 本文作者:SwBack 创作时间:2024/3/26 17:19:19 知乎:https://www.zhihu.com/people/back-88-87 CSDN:https://blog.csdn.net/qq_30817059 百度搜索: SwBack系统: Ubuntu redis: 2.8.17 下载redis源代码,并进行解压 wget http://download.redis.io/re…

百人一岗,Android开发者的困境。。。。。

前言 在当前的Android开发领域,竞争的激烈程度已经达到了前所未有的水平,几乎到了100个开发者竞争1个岗位的地步。 这种“内卷”现象的背后,是技术的快速发展和市场对Android开发者技能要求的不断提升。随着移动应用的普及和多样化&#xf…

SV-7041VP SIP塑料壳sip音箱支持POE供电(白色弧形)

SV-7041VP SIP塑料壳sip音箱支持POE供电 (白色弧形) 一、描述18123651365微信 SV-7041VP是深圳锐科达电子有限公司的一款壁挂式SIP网络有源音箱,具有10/100M以太网接口,可将网络音源通过自带的功放和喇叭输出播放,可…

day11-数据统计(图形报表)

1. Apache ECharts 1.1 介绍 Apache ECharts 是一款基于 Javascript 的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。 官网地址:https://echarts.apache.org/zh/index.html 常见效果展示&a…

如何本地部署开源AI知识库 FastGPT(新手教程)

环境: Win10 WSL2 ubuntu22.04 问题描述: 如何本地部署开源AI知识库 FastGPT 解决方案: 一、安装docker和docker-compose 安装docker 1.apt install docker.io2.apt install docker-compose3.docker --version4.docker compose version