(Java8) 스트림 병렬화와 CompletableFuture 병렬화


  • I/O 가 포함되지 않은 계산 중심의 동작을 실행할 떄는 스트림 인터페이스가 가장 구현하기 간단하며 효율적일 수 있다.(모든 스레드가 계산작업을 수행하는 과정에서는 프로세서 코어수 이상의 스레드를 가질 필요가 없다.)
  • 반면 작업이  I/O 를 기다리는 작업을 병렬로 실행할 때는  CompletableFuture 가 더 많은 유연성을 제공하며 대기/계산(W/C) 의 비율에 적합한 스레드 수를 설정할 수 있다. 특히 스트림의 게으른 특성 때문에 스트림에서 I/O를 실제로 언제 처리할지 예측 하기 어려운 문제도 있다.
==========================================================

병렬 스트림에서는 스트림이 사용하는 쓰레드 풀의 크기가 고정되어 있어서 상점 수가 늘어나는경우 즉, 데이터 크기가 늘어나는 경우 유연하게 대응 할 수 없다.


댓글

이 블로그의 인기 게시물

(18장) WebSocekt과 STOMP를 사용하여 메시징하기

(네트워크)폴링방식 vs 롱 폴링방식

(ElasticSearch) 결과에서 순서 정렬