【Java】同步异步阻塞非阻塞概念
2023-09-11 14:21:35 时间
一. 阻塞/非阻塞
阻塞非阻塞说的是线程的状态
- 阻塞: 线程调用IO接口后,一直等待,不能做其它事
- 非阻塞:线程调用IO接口时,可以做其它事,不用一直等待
二. 同步/异步
同步和异步说的是消息的通知机制
- 同步:线程调用IO接口后,不停询问IO接口是否完成
- 异步:线程调用IO接口后,不用一直询问,由IO接口告知结果
三. 组合
- 同步阻塞: 调用IO接口后,线程一直等待并不停询问IO接口调用结果
- 同步非阻塞:调用IO接口后,线程可以做其它事,隔段时间询问IO接口调用结果
- 异步阻塞: 调用IO接口后,线程一直等待并等待IO接口返回结果
- 异步非阻塞:调用IO接口后,线程可以做其它事,由IO接口告知结果
回调或事件机制实现异步
四. 示例
以 小明点击下载按钮 为例
同步阻塞:如果小明点击下载按钮之后,就一直干瞪着进度条不做其他任何事情直到软件下载完成,这是同步阻塞;
异步阻塞:如果小明点击下载按钮之后,就一直干瞪着进度条不做其他任何事情直到软件下载完成,但是软件下载完成其实是会「叮」的一声通知的(但小明依然那样干等着),这是异步阻塞;
同步非阻塞:如果小明点击下载按钮之后,就去做其他事情了,不过他总需要时不时瞄一眼屏幕看软件是不是下载完成了,这是同步非阻塞;
异步非阻塞:如果小明点击下载按钮之后,就去做其他事情了,软件下载完之后「叮」的一声通知小明,小明再回来继续处理下载完的软件,这是异步非阻塞。
五. 参考资料
相关文章
- Java中的5种同步辅助类
- java -version 问题 : C:ProgramDataOracleJavajavapath;
- java中多线程模拟(多生产,多消费,Lock实现同步锁,替代synchronized同步代码块)
- Java实现 蓝桥杯 算法训练 第五次作业:字符串排序
- Java实现 蓝桥杯 算法训练 1的个数
- Java实现 蓝桥杯 历届试题 大臣的旅费
- Java实现子序列问题
- Java实现 蓝桥杯VIP 算法训练 输出米字形
- Java线程本地存储ThreadLocal
- 【JAVA】 03-Java中的异常和包的使用
- java多线程(二)——锁机制synchronized(同步方法)
- 【JAVA】毕向东Java基础视频教程-笔记
- Linux centos7 配置java环境变量
- 在Java中可以使用自定义的java.net.InetAddress实现来解决虚拟hosts的问题
- Java异常处理:如何写出“正确”但被编译器认为有语法错误的程序
- 华为OD机试 - 基站维护工程师(Java & JS & Python)
- 华为OD机试 - 模拟商场优惠打折(Java & JS & Python)
- 【java】Java教程
- 【java】Java ArrayList
- 力扣——834. 树中距离之和(Java实现+分析)
- java同步和互斥
- JAVA编程:java环境安装和helloworld
- java 程序运行的基础知识【Java bytecode】
- ZZNUOJ_用Java编写程序实现1949:绘制图形(附源码)
- Java核心类库之(多线程:实现多线程、线程同步)