사용자 도구

사이트 도구


java:8:completable_future

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
java:8:completable_future [2019/05/15 16:35]
kwon37xi
java:8:completable_future [2020/11/09 11:47] (현재)
kwon37xi
줄 1: 줄 1:
 ====== Java 8 CompletableFuture ====== ====== Java 8 CompletableFuture ======
-[[https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html|CompletableFuture (Java Platform SE 8 )]]+  * [[https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html|CompletableFuture (Java Platform SE 8 )]] 
 +  * [[https://github.com/spotify/completable-futures|spotify/completable-futures: Utilities for working with futures in Java 8]] 
 + 
 +===== Thread Pool (Executor) ===== 
 +  * ''supplyAsync'' 등의 메소드 호출시 쓰레드 풀을 명시하지 않으면 [[java:concurrent:forkjoinpool|Java ForkJoinPool]]의 ''commonPool()'' 이 사용된다. 
 +  * 개발자가 쓰레드 풀을 제어할 수 없다는 것은 나중에 문제가 될 수 있다. 
 +  * 따라서, 항상 [[java:concurrent:executorservice|Java ExecutorService]] 를 명시적으로 사용하여 쓰레드 풀을 지정하도록 한다. 
  
 ===== ParallelStream vs. CompletableFuture ===== ===== ParallelStream vs. CompletableFuture =====
줄 7: 줄 14:
   * **CompletableFuture** : 반면 작업이 **I/O를 기다리는 작업을 병렬로 실행**할 때는 ''CompletableFuture''가 더 많은 유연성을 제공하며 대기/계산(W/C)의 비율에 적합한 스레드 수를 설정할 수 있다. 특히 스트림의 게으른 특성 때문에 스트림에서 I/O를 실제로 언제 처리할 지 예측하기 어려운 문제도 있다.   * **CompletableFuture** : 반면 작업이 **I/O를 기다리는 작업을 병렬로 실행**할 때는 ''CompletableFuture''가 더 많은 유연성을 제공하며 대기/계산(W/C)의 비율에 적합한 스레드 수를 설정할 수 있다. 특히 스트림의 게으른 특성 때문에 스트림에서 I/O를 실제로 언제 처리할 지 예측하기 어려운 문제도 있다.
   * [[http://fahdshariff.blogspot.kr/2016/06/java-8-completablefuture-vs-parallel.html|fahd.blog: Java 8: CompletableFuture vs Parallel Stream]]   * [[http://fahdshariff.blogspot.kr/2016/06/java-8-completablefuture-vs-parallel.html|fahd.blog: Java 8: CompletableFuture vs Parallel Stream]]
 +
 +===== 여러 CompletableFuture를 하나로 합쳐주기 =====
 +  * [[https://github.com/kwon37xi/research-java-9-10-11/blob/main/src/main/java/kr/pe/kwonnam/research/java/completablefuture/CompletableFutureCollector.java|CompletableFutureCollector.java]]
  
 ===== 참조 ===== ===== 참조 =====
 +  * [[https://www.nurkiewicz.com/2013/05/java-8-definitive-guide-to.html|Java 8: Definitive guide to CompletableFuture]] Good!
 +  * [[https://www.nurkiewicz.com/2013/05/java-8-completablefuture-in-action.html|Java 8: CompletableFuture in action]] Good!
 +  * [[https://www.nurkiewicz.com/2015/11/which-thread-executes.html|Which thread executes CompletableFuture's tasks and callbacks?]] Good!
 +  * [[https://www.baeldung.com/java-completablefuture|Guide To CompletableFuture | Baeldung]]
 +  * [[https://www.youtube.com/watch?v=HdnHmbFg_hw|(94) Asynchronous programming in Java 8: how to use CompletableFuture by José Paumard - YouTube]]
   * [[https://dzone.com/articles/using-java-8-completablefuture-and-rx-java-observa|Using Java 8 CompletableFuture and Rx-Java Observable - DZone Java]]   * [[https://dzone.com/articles/using-java-8-completablefuture-and-rx-java-observa|Using Java 8 CompletableFuture and Rx-Java Observable - DZone Java]]
 +  * [[https://examples.javacodegeeks.com/core-java/java-completablefuture/|Java CompletableFuture Example]] 
 +  * [[https://12bme.tistory.com/545?category=682904|[JAVA] 개선된 동시성(1) - CompletableFuture & Reactive Concept]] 
 +  * [[https://12bme.tistory.com/546|[JAVA] 개선된 동시성(2) - CompletableFuture 프로그래밍]]
java/8/completable_future.1557905714.txt.gz · 마지막으로 수정됨: 2019/05/15 16:35 저자 kwon37xi