Java程序有时为什么要采用异步执行?

        为什么要给Java语言增添异步执行?其实很简单,在一个业务流程中,有时候会有一些耗费时间的分支任务,如果把这些琐碎且不重要的任务用异步来执行,那么就可以减轻当前线程的执行压力。

        举个例子吧,例如有个电商网站为了吸引新用户注册,给出了赠送一年优酷会员的优惠。如果我们采用同步的执行方式,用户帐户开通之后,当前线程还要调用优酷系统的接口,开通会员帐户,并且充值一年会员。整个流程加起来还是挺耗费时间的,让新注册用户等待一两分钟才能收到注册成功的通知,用户心里肯定会怀疑:这是什么破电商网站,注册个会员就要好几分钟,我要是买东西不得卡成翔啊。

 

        如果我们采取异步执行的方式,电商帐户开通之后,我们把开通优酷会员的任务交给其他线程去做,当前线程就不用负责了,直接返回给用户注册成功即可。当其他线程开通优酷会员之后,给用户的手机发一个短信通知即可。你看,采用了异步执行以后,新用户注册的体验更好了。其实我这里说的异步执行就是由SpringBoot自动把任务交给线程池中某个线程去执行。你以前自己创建线程分配任务的方式,也属于异步执行。只不过有了SpringBoot之后,任务的分配更加自动了。

        关于电商网站新用户注册的例子,有的同学可能还有疑问:不用异步执行,我用消息队列来分配任务是不是也行?当然是可行的。刚才我说的异步执行陷于同一个系统中,把分支任务交给其他线程去执行。如果你用的是分布式架构,A系统想要把分支任务分配个B系统去执行,通过消息队列来分配任务完全是可行的,这也算是一种异步执行的方式。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值