【Java】同步异步阻塞非阻塞概念
一. 阻塞/非阻塞
阻塞非阻塞说的是线程的状态
- 阻塞: 线程调用IO接口后,一直等待,不能做其它事
- 非阻塞:线程调用IO接口时,可以做其它事,不用一直等待
二. 同步/异步
同步和异步说的是消息的通知机制
- 同步:线程调用IO接口后,不停询问IO接口是否完成
- 异步:线程调用IO接口后,不用一直询问,由IO接口告知结果
三. 组合
- 同步阻塞: 调用IO接口后,线程一直等待并不停询问IO接口调用结果
- 同步非阻塞:调用IO接口后,线程可以做其它事,隔段时间询问IO接口调用结果
- 异步阻塞: 调用IO接口后,线程一直等待并等待IO接口返回结果
- 异步非阻塞:调用IO接口后,线程可以做其它事,由IO接口告知结果
回调或事件机制实现异步
四. 示例
以 小明点击下载按钮 为例
同步阻塞:如果小明点击下载按钮之后,就一直干瞪着进度条不做其他任何事情直到软件下载完成,这是同步阻塞;
异步阻塞:如果小明点击下载按钮之后,就一直干瞪着进度条不做其他任何事情直到软件下载完成,但是软件下载完成其实是会「叮」的一声通知的(但小明依然那样干等着),这是异步阻塞;
同步非阻塞:如果小明点击下载按钮之后,就去做其他事情了,不过他总需要时不时瞄一眼屏幕看软件是不是下载完成了,这是同步非阻塞;
异步非阻塞:如果小明点击下载按钮之后,就去做其他事情了,软件下载完之后「叮」的一声通知小明,小明再回来继续处理下载完的软件,这是异步非阻塞。
五. 参考资料
分类:
Java
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
2014-03-03 ComboTree使用
2012-03-03 Win7下IIS7.5新建网站错误信息集锦