猿问

java代码并发操作咨询

需求
分页查询数据列表的时候同时查询总条数想并发查询但是感觉下面的代码有点繁琐有没更简便的方式或者有什么第三方框架能够简化类似这样的逻辑
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);
ITMISS
浏览 369回答 2
2回答

翻过高山走不出你

HashMap是非线程安全的,你这样用一定会有问题的。不清楚你要达到的目标是什么,至少从上面的例子上来看,多线程不但没有必要,还引入了新的问题。说说你的具体应用场景,也许在特定场景下你的想法是合适的。

慕虎7371278

一种简便的方案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();
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答