为了账号安全,请及时绑定邮箱和手机立即绑定

java代码并发操作咨询

java代码并发操作咨询

ITMISS 2019-05-21 10:25:02
需求分页查询数据列表的时候同时查询总条数想并发查询但是感觉下面的代码有点繁琐有没更简便的方式或者有什么第三方框架能够简化类似这样的逻辑ExecutorServiceexecutorService=Executors.newFixedThreadPool(2);CountDownLatchcountDownLatch=newCountDownLatch(2);Mapmap=newHashMap();//一个线程查记录数executorService.submit(()->{Listdata=Lists.newArrayList(1,2,3);map.put("data",data);countDownLatch.countDown();});//一个线程查总条数executorService.submit(()->{intcount=10;map.put("count",count);countDownLatch.countDown();});countDownLatch.await();System.out.println(map);
查看完整描述

2 回答

?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

HashMap是非线程安全的,你这样用一定会有问题的。不清楚你要达到的目标是什么,至少从上面的例子上来看,多线程不但没有必要,还引入了新的问题。说说你的具体应用场景,也许在特定场景下你的想法是合适的。
                            
查看完整回答
反对 回复 2019-05-21
?
慕虎7371278

TA贡献1802条经验 获得超4个赞

一种简便的方案
CompletableFuturefuture=CompletableFuture.supplyAsync(()->{
Listdata=Lists.newArrayList(1,2,3);
returndata;
}).thenAcceptBoth(CompletableFuture.supplyAsync(()->10),(d,c)->{
Mapmap=newHashMap<>();
map.put("data",d);
map.put("count",c);
System.out.println(map);
});
future.get();
                            
查看完整回答
反对 回复 2019-05-21
  • 2 回答
  • 0 关注
  • 368 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号