BIO NIO AIO 简介
简介
NIO与AIO的简单使用
基本概念
同步与异步
同步和异步是针对应用程序和内核的交互而言的;同步指的是用户进程触发IO操作并等待或者轮询的去查看IO操作是否就绪;而异步是指用户进程触发IO操作以后便开始做自己的事情,而当IO操作已经完成的时候会得到IO完成的通知
阻塞与非阻塞
阻塞和非阻塞是针对于进程在访问数据的时候,根据IO操作的就绪状态来采取的不同方式;阻塞方式下读取或者写入将一直等待;而非阻塞方式下,读取或者写入会立即返回一个状态值
BIO NIO AIO
BIO
- 简介:
同步阻塞I/O
,客户端有连接请求时,服务器端就需要启动一个线程进行处理,如果连接不做任何处理就会造成不必要的线程开销,可以采用线程池进行优化 - 应用场景:连接数少且固定
- API:编程比较简单,JDK1.4之前的唯一选择
NIO
- 简介:
同步非阻塞I/O
,客户端发送的连接请求都会注册到Selector(多路复用器)上,Selector轮询
到连接有I/O请求时才会启动一个线程进行处理 - 应用场景:连接数多且短(轻操作),如聊天服务器
- API:编程比较复杂,Since JDK1.4
AIO (NIO 2.0)
- 简介:
异步非阻塞I/O
,客户端的I/O请求都是由OS先完成再通知程序去启动线程进行处理 - 应用场景:连接数多且长(重操作),如图片服务器
- API:编程比较复杂,Since JDK1.7
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!