package com.github.dadiyang.bestpractice.thread; import org.omg.CORBA.INTERNAL; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; public class CompletableFutureDemo { public static Integer calc(Integer para) { try { //长时间的计算 TimeUnit.SECONDS.sleep(100); } catch (InterruptedException e) { e.getMessage(); } return para * para; } //所有的线程都是Deamo线程,如果主线程退出,所有的都会退出 public static void main(String[] args) throws ExecutionException, InterruptedException { CompletableFuture<Void> future = CompletableFuture .supplyAsync(() -> calc(50)) //开启一个线程,默认的执行任务 .thenApply((i) -> Integer.toString(i)) //将上一个的执行结果进行处理 .thenApply((s -> "\"" + s + "\"")) .thenAccept(System.out::println); CompletableFuture<Void> future1 = CompletableFuture .supplyAsync(() -> calc(50)) ///相当于runnable,底层是通过Excutor实现,启动start //将执行结果传递给下一个future .thenCompose((i) -> CompletableFuture.supplyAsync(() -> calc(i))) //执行最终的处理结果 .thenApply((s -> "\"" + s + "\"")) .thenAccept(System.out::println); //获取结果 future.get(); future1.get(); } }
java8之CompletableFuture
最新推荐文章于 2024-08-06 16:48:59 发布