CompletableFuture三行代码优雅实现多线程并发
业务并行处理示例定义线程池finalstaticAtomicLongidGennewAtomicLong(0);staticExecutorServiceexecutornewThreadPoolExecutor(3,3,30,TimeUnit。SECONDS,newArrayBlockingQueue(100),newThreadFactory(){OverridepublicThreadnewThread(Runnablecmd){ThreadtnewThread(cmd);t。setName(tprdidGen。incrementAndGet());returnt;}});复制代码业务处理模拟privatestaticStringprocess(ProductCommonproduct){return当前线程:Thread。currentThread()。getName(),处理结果测试:product。getProductId();}复制代码核心三行代码并发处理ListProductCommonproductsLists。newArrayList(p1,p2,p3);ListCompletableFutureStringprdFuturesproducts。stream()。map(iCompletableFuture。supplyAsync(()process(i),executor))。collect(Collectors。toList());ListStringprdResultsprdFutures。stream()。map(CompletableFuture::join)。collect(Collectors。toList());复制代码结果打印当前线程:tprd1,处理结果测试:1当前线程:tprd2,处理结果测试:2当前线程:tprd3,处理结果测试:3Processfinishedwithexitcode0