Future模式学习

概述


如果系统需要调用某个外部系统的接口获取数据结果,进行某些业务操作,但是对方的接口可能响应很慢,这个时候可以尝试使用Future并发模式。

future模式跟生产者-消费者模式不同,后者是无需理会对方系统接口如何处理的。具体可以参看生产者-消费者模式 。而future模式则合适处理那种需要依赖对方接口返回结果的情况。


例子


比如说,A系统需要调用B系统的getData(List<Long> idList) 方法,一次只能支持查询50个,也即是说,如果你有个150个id,得调用这个接口三次,假设150个id存储在List<Long> tempList = new ArrayList<>() 中,那么可以对tempList进行分页,然后串行的调用getData接口三次。关于如何对一个list进行分页,可以参考对ArrayList进行分页

但是这种办法是串行的调用,还是有些慢。可以利用Future模式来做到并行调用getData接口,最后调用Future接口中get方法,阻塞住线程,等待处理结果,并做结果汇总操作。虽然这种方式也是要调用getData接口三次,但是速度确比串行的要快。

关于使用JAVA中的Future和FutureTask的代码,网上一大把,这里就不详细列出了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值