CompletableFuture 일반적인 방법

공용  클래스 CompletableFutureTest {
     공공  정적  무효 메인 (문자열 []에 args) {예외 발생 

        Test5을 () 

    } 

    / * * 
     * 수단은 비동기 수신 BiConsumer은 whenCompleteAsync 
     * 수단은, 동기 인입 BiConsumer이다 whenComplete 
     * / 
    공공  정적  공극   TEST1은 () ExecutionException, 예외 : InterruptedException {발생 
        CompletableFuture <문자열> 미래를 CompletableFuture.supplyAsync = (() -> " 안녕하세요 " );
          // future.whenCompleteAsync ((V, R & LT) -> { 
        future.whenComplete ((V, R & LT) -> { 
            시스템.밖으로 .println ( " ========= " );
            시도 { 
                TimeUnit.SECONDS.sleep을 ( 2 ); 
            } 캐치 (예외 : InterruptedException 전자) { 
                e.printStackTrace (); 
            } 
            시스템. 밖으로 (.println " ===== ==== 이상 " ); 
        }); 
        체계. 밖으로 .println ( " ^^^^^^^^^^ " ); 
        체계. 에서 .println (. 미래 것은 ) (); 
        는 Thread.currentThread () (가입).;
    } 


    / * * 
     * 또한 두 동기 및 비동기 방식, thenApply없는 예외 처리 갖는다 
     * @throws ExecutionException 
     * @throws 예외 : InterruptedException 
     * / 
    공공  정적  무효   TEST2 ()를 발생 ExecutionException, 예외 : InterruptedException { 
        CompletableFuture <정수> = CompletableFuture.supplyAsync 미래 (() -> " 안녕하세요 " ) 
                .thenApply ((S) -> {
                     은 try { 
                        시스템. OUT .println ( " ========== " ); 
                        (TimeUnit.SECONDS.sleep . 5 );
                    } 캐치 (예외 : InterruptedException 전자) { 
                        e.printStackTrace (); 
                    } 
                    시스템. 밖으로 (.println " ===== ==== 이상 " );
                    복귀 ) (s.length 단계; 
                }); 
//               .thenApplyAsync ((S) -> {
 //                     시도 {
 //                         에서 System.out.println ( "==========");
 //                         TimeUnit.SECONDS.sleep (5);
 //                     } 캐치 (예외 : InterruptedException 전자) {
 //                         e.printStackTrace ();
 //                    }
 //                     에서 System.out.println ( "==== 이상 =====");
//                     반환 s.length ();
//                 }); 
        체계. 밖으로 .println ( " ^^^^^^^^^^ " ); 
        체계. 에서 .println (. 미래 것은 ) (); 
        는 Thread.currentThread () (가입).; 
    } 

    / * * 
     * handleAsync有异常处理
     * @throws ExecutionException 
     * @throws 예외 : InterruptedException 
     * / 
    공공  정적  무효   TEST3은 () ExecutionException, 예외 : InterruptedException는 {슬로우 
        CompletableFuture <정수> = 미래를 CompletableFuture.supplyAsync (() -> " 안녕하세요 " ) 
                .handleAsync ((V, T) -> {
                     복귀 v.length (); 
                }); 
        체계. 에서 .println (. 미래 것은 ) (); 
    } 

    / * * 
     * thenAcceptAsync直接将上一个的结果进行消费
     * @throws ExecutionException 
     * @throws 예외 : InterruptedException 
     * / 
    공공  정적  무효   TEST4 () ExecutionException, 예외 : InterruptedException는 {슬로우
        CompletableFuture.supplyAsync (() -> " 안녕하세요 "  )
                .thenAcceptAsync ((X) -> { 
                    시스템. 밖으로 .println (X); 
                }); 
    } 

    / * * 
     *执行完上一个미래后再执行一个실행 가능한 
     *의 @throws ExecutionException 
     * @throws 예외 : InterruptedException 
     * / 
    공공  정적  무효   test5 ()는 ExecutionException, 예외 : InterruptedException {발생 
        CompletableFuture.supplyAsync을 (() -> " 안녕하세요 " ) 
                .thenRunAsync (() -> {
                    체계. 밖으로 (.println " === ==== 이상 " ); 
                }); 
    } 
}

 

추천

출처www.cnblogs.com/moris5013/p/12019941.html