Stream에서 수행되는 작업은 기본적으로 single thread에서 처리되지만, Multi thread에서 처리할 수도 있습니다.
1. Stream을 Single 쓰레드에서 처리
다음은 Single thread에서 Stream의 작업을 수행시키는 예제입니다. Single thread에서 순차적으로 처리되기 때문에, forEach()에서 출력되는 순서는 리스트에 저장된 순서와 동일합니다.
List<String> list =
Arrays.asList("a", "b", "c", "d", "e", "f", "g", "h", "i");
Stream<String> stream = list.stream();
stream.forEach(System.out::println);
Output:
a
b
c
d
e
f
g
h
i
2. Stream을 멀티 쓰레드에서 병렬로 처리
Stream.parallel()
은 Stream에서 수행되는 작업을 병렬로 처리하도록 합니다. 멀티 쓰레드에서 병렬로 처리되기 때문에 속도는 빠르지만, forEach()
에서 출력되는 순서는 리스트에 저장된 순서와 다릅니다. 또한, 실행할 때마다 처리되는 쓰레드의 타이밍이 다르기 때문에 결과가 달라질 수 있습니다. 그렇기 때문에 처리 순서가 달라져도 결과에 영향을 주지 않을 때만 병렬로 처리해야 합니다.
List<String> list =
Arrays.asList("a", "b", "c", "d", "e", "f", "g", "h", "i");
Stream<String> stream = list.stream();
stream.parallel().forEach(System.out::println);
Output:
f
e
h
i
g
c
b
d
a
3. Collection.parallelStream()으로 병렬 처리
Collection.parallelStream()
은 병렬로 동작하는 Stream 객체를 리턴합니다.
아래와 같이 리스트에서 Stream을 만들 때 사용할 수 있습니다.
List<String> list =
Arrays.asList("a", "b", "c", "d", "e", "f", "g", "h", "i");
Stream<String> stream = list.parallelStream();
stream.forEach(System.out::println);
Output:
f
e
c
d
b
a
h
i
g
Loading script...
Related Posts
- Java - Unsupported class file major version 61 에러
- Java - String.matches()로 문자열 패턴 확인 및 다양한 예제 소개
- Java - 문자열 공백제거 (trim, replace)
- Java - replace()와 replaceAll()의 차이점
- Java - ArrayList 초기화, 4가지 방법
- Java - 배열 정렬(Sorting) (오름차순, 내림차순)
- Java - 문자열(String)을 비교하는 방법 (==, equals, compare)
- Java - StringBuilder 사용 방법, 예제
- Java - 로그 출력, 파일 저장 방법 (Logger 라이브러리)
- Java IllegalArgumentException 의미, 발생 이유
- Java - NullPointerException 원인, 해결 방법
- Seleninum의 ConnectionFailedException: Unable to establish websocket connection 해결
- Java - compareTo(), 객체 크기 비교
- Java - BufferedWriter로 파일 쓰기
- Java - BufferedReader로 파일 읽기
- Java charAt() 함수 알아보기
- Java - BigInteger 범위, 비교, 연산, 형변환
- Java contains()로 문자(대소문자 X) 포함 확인
- Java - Set(HashSet)를 배열로 변환
- Java - 문자열 첫번째 문자, 마지막 문자 확인
- Java - 문자열 한글자씩 자르기
- Java - 문자열 단어 개수 가져오기
- Java - 1초마다 반복 실행
- Java - 배열을 Set(HashSet)로 변환
- Java - 여러 Set(HashSet) 합치기
- Java - 명령행 인자 입력 받기
- Java - 리스트 역순으로 순회, 3가지 방법
- Java - 특정 조건으로 리스트 필터링, 3가지 방법
- Java - HashMap 모든 요소들의 합계, 평균 계산
- Java - 특정 조건으로 HashMap 필터링
- Java - 싱글톤(Singleton) 패턴 구현
- Java - 숫자 왼쪽에 0으로 채우기
- Java - String 배열 초기화 방법
- Java - 정렬된 순서로 Map(HashMap) 순회
- Java - HashMap에서 key, value 가져오기