以前使用过的 CountDownLatch 方式
现在使用的 Lambda 方式
示例代码:
// 定义一个公共的池
public static final ForkJoinPool FORK_JOIN_POOL = new ForkJoinPool(Runtime.getRuntime().availableProcessors());
public List<RegionInfoDTO> getRegionInfos(List<String> userRegionIds) {
// 提交并发请求任务
Future<List<RegionInfoDTO>> future = forkJoinPool.submit(new GetRegionInfosTask(userRegionIds));
try {
// 取任务结果
return future.get(1, TimeUnit.MINUTES);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
log.error("线程中断 {}", ExceptionUtils.getStackTrace(e));
} catch (ExecutionException e) {
log.error("任务执行失败 {}", ExceptionUtils.getStackTrace(e));
} catch (TimeoutExcepti