Callable 实际开发中的用法

        我们在RPC接口开发的过程中,总会碰到这样的情况,比如一个接口分别需要调用不同的系统返回给前端action。但是在考虑高性能的情况下,需要思考下实现这种方案的最优解。首先第一种思路,各系统之间独立,未产生直接联系,就是串行进行开发,调用完A系统,在调用B系统,然后再调用C系统。这样做事没有任何的问题,但是,这不符合高性能、高可用的设计原则。那么,我们就需要换一种思路,用到并行的开发思路。在保障系统的性能的前提下,采用多线程开发。提高RPC接口的访问效率。若碰到需要使用需要返回值的线程的话,Callable<V> 是一种不错的解决方案。

      首先,我们创建一个线程池,对线程进行管理和分配。

 ExecutorService executor = Executors.newFixedThreadPool(3);  

      接着,用Future来接受返回值,并关闭线程池,释放资源。

List<Future<Map<String,String>>> results = new ArrayList<Future<Map<String,String>>>();
results.add(executor.submit(new Thread1()));
results.add(executor.submit(new Thread2()));
results.add(executor.submit(new Thread3()));
executor.shutdown();

    最后,用主线程的容器装载其他线程的返回值。

for (int i = 0; i < results.size(); i++) {
    try {
		map.putAll(results.get(i).get());
	} catch (InterruptedException e) {
		e.printStackTrace();
	} catch (ExecutionException e) {
		e.printStackTrace();
	}
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值