cccvip/-

JDK8-CompletableFuture使用

Opened this issue · 0 comments

CompletableFuture

基本使用

  • supplyAsync

    异步线程处理

  • thenCompose

    等到线程处理

    CompletableFuture<String> completableFuture = CompletableFuture.supplyAsync(() -> {  
     return "A";  
     }).thenCompose(A -> CompletableFuture.supplyAsync(() -> {  
     return "B";  
     }));  
     try {  
     System.out.println(completableFuture.get());  
     } catch (InterruptedException e) {  
     e.printStackTrace();  
     } catch (ExecutionException e) {  
     e.printStackTrace();  
     }
  • thenCombine

    线程合并处理

    CompletableFuture<String> completableFuture = CompletableFuture.supplyAsync(() -> {  
     return "A";  
     }).thenCombine(CompletableFuture.supplyAsync(() -> {  
     return "B";  
     }), (a, b) -> {  
     return a + "====" + b;  
     });  
     try {  
     System.out.println(completableFuture.get());  
     } catch (InterruptedException e) {  
     e.printStackTrace();  
     } catch (ExecutionException e) {  
     e.printStackTrace();  
     }
  • applyToEither

    或者上面或者下面

     CompletableFuture<String> bus = CompletableFuture.supplyAsync(() -> {
                ThreadTool.printThread("700路公交正在赶来");
                ThreadTool.sleep(100);
                return "700路到了";
            }).applyToEither(CompletableFuture.supplyAsync(() -> {
                ThreadTool.printThread("800路公交正在赶来");
                ThreadTool.sleep(500);
                return "800路到了";
            }), firstbus -> firstbus);
  • 自定义线程池使用

    每一个方法都会提供重载的函数,多一个线程池