@Autowired
private ThreadPoolTaskExecutor taskExecutor;
public List<Map> asyncGetTaskCount(String type, String userId) {
List<Map> list = new ArrayList<>();
final CountDownLatch latch =new CountDownLatch(3);
try{
List<Integer> status = Arrays.asList(2, 3, 4);
List<Future<Map>> futureList = new ArrayList<>();
status.forEach(item -> {
taskExecutor.submit(() ->{
try {
log.info("thread1->doWork");
CompletableFuture<Map> future = processService.aysncTaskCount(type, item, userId);
futureList.add(future);
} finally {
log.info("thread1->end");
//线程数-1
latch.countDown();
}
});
});
latch.await(10, TimeUnit.MINUTES);
for(Future<Map> result : futureList){
Map map = result.get();
list.add(map);
}
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
return list;
}
---------------------------------------------------------------
@Async("taskCountExecutor")
@Override
public CompletableFuture<Map> aysncTaskCount(String type, Integer dataStatus, String userId) {
Map map = taskCount(type, dataStatus, userId);
return CompletableFuture.completedFuture(map);
}
异步线程简单例子
- 01 drools中then部分的写法…2022-05-25
- 02 SpringBoot 整合 Rabbi…2022-05-25
- 03 CA周记 - Build 2022 上…2022-05-25
- 04 .NET Core 读取配置技巧…2022-05-25
- 05 Jwt隐藏大坑,通过源码…2022-05-25
- 06 Python数据分析--Numpy…2022-05-24
- 07 做一个能对标阿里云的前…2022-05-24
- 08 Redis快速度特性及为什…2022-05-24
- 09 CoaXPress 线缆和接插件…2022-05-24
- 010 5分钟快速搭建一个spri…2022-05-24
- 01drools中then部分的写法…2022-05-25
- 02SpringBoot 整合 Rabbi…2022-05-25
- 03CA周记 - Build 2022 上…2022-05-25
- 04.NET Core 读取配置技巧…2022-05-25
- 05Jwt隐藏大坑,通过源码…2022-05-25
- 06Python数据分析--Numpy…2022-05-24
- 07做一个能对标阿里云的前…2022-05-24
- 08Redis快速度特性及为什…2022-05-24
- 09CoaXPress 线缆和接插件…2022-05-24
- 0105分钟快速搭建一个spri…2022-05-24