CompletableFuture入门级别用法

无返回值

        

/**
 *   CompletableFuture.runAsync  无返回值
 *   不指定线程池 则使用默认的ForkJoinPool线程池
 */
public class ComplatebleFutureDemo01 {
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        ExecutorService threadPool = Executors.newFixedThreadPool(3);
        CompletableFuture runAsync = CompletableFuture.runAsync(()->{
            System.out.println(Thread.currentThread().getName());
            try {TimeUnit.MILLISECONDS.sleep(500);} catch (InterruptedException e) {e.printStackTrace();}
        },threadPool);
        System.out.println(runAsync.get());
        threadPool.shutdown();
    }
}

有返回值

/**
 *   CompletableFuture.runAsync  无返回值
 *   CompletableFuture.supplyAsync  有返回值
 *   不指定线程池 则使用默认的ForkJoinPool线程池
 */
public class ComplatebleFutureDemo01 {
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        ExecutorService threadPool = Executors.newFixedThreadPool(3);
        CompletableFuture uCompletableFuture = CompletableFuture.supplyAsync(() -> {
            System.out.println(Thread.currentThread().getName());
            try {TimeUnit.MILLISECONDS.sleep(500);} catch (InterruptedException e) {e.printStackTrace();}
            return "hello 有返回值";
        },threadPool);
        System.out.println("返回值为:"+uCompletableFuture.get());
        threadPool.shutdown();
    }

你可能感兴趣的:(juc,java,java,开发语言,juc)