- 在Java8中,CompletableFuture提供了非常强大的Future的扩展功能,可以帮助我们简化异步编程的复杂性,并且提供了函数式编程的能力,可以通过回调的方式处理计算结果,也提供了转换和组合 CompletableFuture 的方法。
- 它可能代表一个明确完成的Future,也有可能代表一个完成阶段( CompletionStage ),它支持在计算完成以后触发一些函数或执行某些动作。
- 它实现了Future和CompletionStage接口
以下提供CompletableFuture实际操作代码
//方法调用
upload(urlList,state,uploadurl);
//这里的State可用其他数据类型替代如String
public List<State> upload(List<String> urlList,MultiState state, String uploadurl){
int i=0;
//使用newCachedThreadPool线程池,该线程池可以缓存60L的时间
Executor executor = Executors.newCachedThreadPool();
//采用Stream流的形式进行处理
List<CompletableFuture<State>> priceFuture = urlList.stream().map(url -> CompletableFuture
.supplyAsync(() -> captureRemoteData(url,state,uploadurl,i) ,executor))
.collect(Collectors.toList());
return priceFuture.stream().map(CompletableFuture::join).col