同步/异步/阻塞/非阻塞

同步与异步

同步:A任务依赖B任务,只有B任务完成,A任务才算完成,两个任务状态保持一致,有点同生共死的味道,是一种可靠的任务序列。

异步:A任务依赖B任务,但只是通知B任务,并不等B任务完成,只要A自己完成就算完成任务了,至于B是否完成就不一定了,故是一种不可靠的任务序列。

即同步保证程序可靠性,异步提升程序性能。

同步:流程处理结果简单;易于捕获异常

异步:没有时序严格限制,不影响主线程逻辑,常用IO等耗时操作

 

阻塞与非阻塞

阻塞:进程在发起了一个系统调用后,由于该操作不能立即完成,需等待, 于是内核将进程挂起为waiting状态, 失去CPU执行权,等操作完成后,再设为ready

非阻塞: 不会失去CPU执行权

不管是进程还是线程,每次阻塞、切换都需要陷入系统调用(system call),先让CPU跑操作系统的调度程序,然后再由调度程序决定该跑哪一个进程(线程)。

线程阻塞三种情况:

1.等待阻塞:运行时线程执行wait(),JVM把线程放入等待池中,线程释放锁

2.同步阻塞:运行线程等待获取锁,JVM把线程放入锁池,线程释放锁

3.其他阻塞:运行线程调用sleep(),join(),或者发出I/O请求,JVM将线程设为阻塞状态。sleep不释放锁

同步与阻塞

初看起来,同步与阻塞很相似,都是在等,但二者其实是两个不同概念。同步指调用得不到结果就不返回,这一过程不一定阻塞。

CPU可能仍在执行程序,只是没有返回结果,此时仍是非阻塞.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值