공용 클래스 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 " === ==== 이상 " ); }); } }