-
day30 - JAVA (자바, 스트림, 병렬 처리)KIC/JAVA 2021. 7. 27. 00:04반응형
[리덕션]
-> 대량의 데이털르 가공해 축소하는 것
-> 데이터의 합계, 평균값, 카운팅 최대값, 최소값
-> 컬렉션의 요소를 리덕션의 결과물로 바로 집계할 수 없을 경우에는 집계하기 좋도록 필터링, 매핑, 정렬, 그룹핑 등의 중간 처리 과정이 필요하다.(스트림 파이프 라인의 필요성)
[파이프 라인]
-> 여러개의 스트림이 연결되어 있는 구조
-> 파이프라인에서 최종 처리를 제외하고는 모두 중간 처리 스트림
[중간 처리와 최종 처리]
-> Stream 인터페이스는 필터링, 매핑, 정렬 등의 많은 중간 처리 메소드를 가진다.
-> 스트림에서 다시 중간 처리 메소드를 호출해 파이프 라인을 형성한다
[스트링 타입이 제공하는 최종 처리 메서드]
[루핑(loooping)]
-> 요소 전체를 반복하는 것을 루핑이라고 한다.
[peak]
-> 중간 처리 메서드
-> 중간 처리 단계에서 전체 요소를 루핑하며 추가 작업 하기 위해 사용
-> 최정 처리 메소드가 실행되지 않으면 지연된다.
-> 반드시 최종 처리 메소드가 호출되어야 동작한다.
[forEach()]
-> 최종 처리 메서드
-> 파이프라인 마지막에 루핑하여 요소를 하나씩 처리한다.
-> 요소를 소비하는 최종 처리 메소드
-> sum()과 같은 다른 최종 메소드 호출이 불가능 하다.
[커스텀 집게를 위한 메소드]
-> sum(), average(), count(), max(), min() 사용
-> reduce() 메서드 사용
[병렬 처리]
-> 머리 코어 CPU 환경에서 쓰인다.
-> 하나의 작업을 분할해서 각각의 코어가 병렬적으로 처리하는 것
-> 병렬 처리의 목적은 작업 처리 시간을 줄이기 위한 것이다.
-> 자바 8 부터 요소를 병렬 처리할 수 있도록 하기 위해 병렬 스트림을 제공한다.
[동시성과 병렬성]
-> 동시성: 멀티 작업을 위해 멀티 스레드가 번갈아 가며 실행하는 성질
-> 병렬성: 멀티 작업을 위해 멀티 코어를 이용해서 동시에 실행하는 성질
300x250'KIC > JAVA' 카테고리의 다른 글
day32 - JAVA (자바, 스트림 예제, 멀티 스레드) (0) 2021.07.28 day31 - JAVA (자바, 스트림, 플랫맵, 필터) (0) 2021.07.27 day29 - JAVA (자바, 메소드 참조, 스트림, 병렬처리) (0) 2021.07.25 day28 - JAVA (자바, Collection 예제, 람다식) (0) 2021.07.22 day27 - JAVA (자바, Collection, Iterator, Map) (0) 2021.07.21