- fockJoinPool线程池由jdk1.7版本开始引进,jdk1.8版本对fockJoinPool进行优化
1、创建一个线程池
ForkJoinPool forkJoinPool = new ForkJoinPool(15);
2、获取List集合
//根据采购配货单、门店、商品、日期查询商品编号、单据类型、发货逻辑仓、主配单号
List<SCM_BL_DISTRIBUTION_PLAN_ALLOCATE_DTL> productInfoByDistributionPlans = scmBlDistributionPlanAllocateDtlDao.getProductInfoByDistributionPlan(tenantNumId,
dataSign, request.getDistPlanNumId(),subUnitNumId,orderDate);
3、对集合进行遍历
//对上面获取的集合进行map集合遍历并开启异步线程
List<CompletableFuture<DistributionPlanProductInfo>> futures = productInfoByDistributionPlans.stream().map(productInfoByDistributionPlan -> CompletableFuture.supplyAsync(() -> {
//定义一个对象用于返回
DistributionPlanProductInfo productInfo = new DistributionPlanProductInfo();
return productInfo;
}, forkJoinPool)).collect(toList());
//将获取的list集合通过stream流注入并合并到新集合
List<DistributionPlanProductInfo> collect = futures.stream().map(CompletableFuture::join).collect(toList());
4、关闭线程池
forkJoinPool.shutdown();