同步/异步 和 阻塞/非阻塞 的区别

同步

发出一个调用时,在没有得到结果之前,该调用就不返回。但是一旦调用返回,就得到返回值.

异步

调用在发出之后,这个调用就直接返回了,所以没有返回结果。换句话说,当一个异步过程调用发出后,调用者不会立刻得到结果。而是在调用发出后,被调用者通过状态、通知来通知调用者,或通过回调函数处理这个调用

阻塞

阻塞调用是指调用结果返回之前,当前线程会被挂起。调用线程只有在得到结果之后才会返回。

非阻塞

非阻塞调用指在不能立刻得到结果之前,该调用不会阻塞当前线程

结论

我认为大概是这样的:
异步/同步是发生在多线程中的.(单线程中的Timer内部实现也是多线程)
阻塞/非阻塞是发生在单线程中的.

同步和阻塞的最大区别就是线程会不会挂起

这里写图片描述

四种方式组合及性能分析

组合方式性能分析
同步阻塞最常用的一种用法,使用也是最简单的,但是I/O性能一般很差,CPU大部分处于控线状态
同步非阻塞       提升I/O性能常用的手段,就是将I/O的阻塞改成非阻塞方式,尤其在网络I/O是长连接同时传输数据也不是很多的情况下,提升性能非常有效.
       这种方式通常能提升I/O性能,但是会增加CPU消耗,要考虑增加的I/O性能能不能补偿CPU的消耗,也就是系统的瓶颈是I/O上还是CPU上.
异步阻塞       这种方式在分布式数据库中经常用到,例如,在一个分布式数据库中记录一条记录,通常会有一份是同步阻塞的记录,还有2~3份备份记录会写到其他机器上,这些备份记录通常都是采用异步阻塞的方式写I/O.
       异步阻塞对网络I/O能够提升效率,尤其像上面这种同时写多分相同数据的情况
异步非阻塞       这种组合方式用起来比较复杂,只有在一些非常复杂的分布式情况下使用,集群之间的消息同步机制一半用这种I/O组合方式,如Cassandra的Gossip通信机制就是采用异步非阻塞的方式.
       它适合同时要传多分相同的数据到集群中不同的机器,同时数据的传输量虽然不大却非常频繁的情况.这种网络I/O用这种方式性能能达到最高


1.引用自<深入分析java web技术内幕>
2.https://www.zhihu.com/question/19732473


此为读书笔记,还望各位多多指导

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值