一分钟带你彻底理解同步异步,阻塞非阻塞的区别

本文介绍了同步与异步的概念,强调消息通知机制,同步关注等待返回,异步则无需等待。同时阐述了阻塞与非阻塞的区别,阻塞会进入阻塞态,而非阻塞则立即返回。文章还详细分类了四种IO模型:同步阻塞IO、同步非阻塞IO、IO多路复用(Reactor模式)和异步IO(Proactor模式),并举例说明了Java NIO和操作系统层面的相关应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 同步&异步

同步与异步:关心的是消息通知机制

如果调用方发起调用后,需要等待这个返回值,调用方主动去等它的返回,那么就是同步

如果调用方发起调用后,不用调用方去主动等它返回或者主动询问它返回,那么就是异步

下面简单列举几个例子

同步

A a = read();

异步

read(()->{
    public void onSuccess(){
        xxxx
    }
})

思考:Future算异步还是同步?

Future<Integer> future = ThreadPoolExecutor.submit(new Task());
int result = future.get();

2. 阻塞&非阻塞

阻塞&非阻塞:关心的是调用者的状态

阻塞:调用者发起调用后,调用者从运行态(Runnable)进入到阻塞态(Blocked),直到返回值准备好返回才切换会运行态

非阻塞:调用者发起调用后,不会进入阻塞态(Blocked),会立刻返回,返回值可以是空值,也可以是其他;应用程序需要自己轮训返回值是否准备好

下面也举几个例子

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值