sequence of elements supporting sequential and parallel aggregate operations
연속적이고 병렬적인 집계 연산을 지원하는 순서가 있는 요소
List<String> names = new ArrayList<>();
names.add("woonsik0");
names.add("woonsik1");
names.add("woonsik2");
names.add("woonsik3");
names.add("Koonsik");
names.add("Koonsik1");
names.add("Moonsik");
Stream<String> stringStream = names.stream().map(String::toUpperCase);
/*List<String> list = */ names.stream().map((s) -> {
System.out.println(s);
return s.toUpperCase();
}) /*.collect(Collectors.toList())*/;
/*list.forEach(System.out::println);*/
주석 처리 된 부분이 해제되지 않는다면 아무것도 출력되지 않는다
-> 중개Stream으로만 구성되어있어서 stream을 리턴할뿐 실행은 하지 않으므로
-> 종료Stream이 오면 그때 값을 리턴하고 출력할수 있게 된다
List<String> list = names.parallelStream().map(String::toLowerCase)
.collect(Collectors.toList());
List<String> list1 = names.parallelStream().map((s) -> {
//아래 출력에서 출력되는 쓰레드가 모두 다른것을 볼수 있다 (병렬적인 처리)
System.out.println(s + " "+ Thread.currentThread().getName());
return s.toUpperCase();
}).collect(Collectors.toList());
list.forEach(System.out::println);
list1.forEach(System.out::println);
/* - 출력값중 prallelStream 내부에서 출력된 부분 -
woonsik2 ForkJoinPool.commonPool-worker-5
Koonsik main
woonsik0 ForkJoinPool.commonPool-worker-27
woonsik1 ForkJoinPool.commonPool-worker-13
woonsik3 ForkJoinPool.commonPool-worker-23
Moonsik ForkJoinPool.commonPool-worker-19
Koonsik1 ForkJoinPool.commonPool-worker-9
*/