同步与异步

李子捌 发表于 2021/11/29 08:54:31 2021/11/29
【摘要】 1、同步同步指的的是串行,从调用方的角度来看,同步需要等待结果,才能继续运行。比如Java中常见的阻塞IO,等待返回结果的接口请求等。举个栗子:平时做饭的时候,先切菜,然后切好菜了就会淘米煮饭,如果你再这里等着饭煮好了再去做菜,这就是同步;但是这样你肯定会饿肚子。2、异步异步指的是并行,从调用方的角度来看,异步不需要等待结果,而是调用之后继续运行后续程序。比如Java中的Nio,多线程技术等...

1、同步

同步指的的是串行,从调用方的角度来看,同步需要等待结果,才能继续运行。比如Java中常见的阻塞IO,等待返回结果的接口请求等。


举个栗子:

平时做饭的时候,先切菜,然后切好菜了就会淘米煮饭,如果你再这里等着饭煮好了再去做菜,这就是同步;但是这样你肯定会饿肚子。


2、异步

异步指的是并行,从调用方的角度来看,异步不需要等待结果,而是调用之后继续运行后续程序。比如Java中的Nio,多线程技术等。


举个栗子:

还是做饭,当你淘米煮饭的时候,你不在这里等待,而是继续去炒菜,等你的饭好了之后电饭煲会通知你,这就是异步。


3、什么时候使用同步或异步

同步使用场景:

当调用方需要获取被调用方的返回结果才能继续进行后续操作的时候,往往就会使用同步方式。比如接口调用中获取token,等待系统账户密码验证的登录结果等。


异步使用场景:

当调用方对返回结果不依赖,当下继续执行不依赖返回结果,并且调用的操作比较耗时,就要考虑使用异步方式。比如耗时较长的IO操作,就要考虑使用非阻塞IO;比如tomcat的异步Servlet等。


4、注意事项

我们通过充分利用多核CPU的优势提供运行效率,也就是通过多线程来实现异步,但是单核CPU是下多线程并不能带来性能提升。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。