목록Java (2)
백엔드 개발 블로그
기본List results = inputList.parallelStream() .map(this::doSomeProcessing) .collect(Collectors.toList());parallelStream()을 중간에 하나 넣어주기만 하여도 자동으로 병렬 실행된다.이 때 실제 병렬 처리에 사용되는 pool은 전역으로 공유하는 공유 ForkJoinPool이다.기본적으로 pool size는 CPU 코어 수 - 1이다.그렇다고 CPU 코어를 다 안쓰는 것은 아니다. 병렬 처리 시에 Main 쓰레드도 거든다. 따라서 전체 코어를 사용한다.참고 Medium 게시글java.util.concurrent.ForkJoinPool.common.parallelism 환경 변수를 수정하여 기본 common p..

Java 가상 스레드는 JDK 19부터 Preview, LTS 버전인 JDK 21부터 정식 탑재된 기능으로서 OS가 제공해주는 스레드를 그대로 사용하지 않고 가상의 경량 스레드를 사용하는 기능이다. 개인적으로는 JDK 8 이후로 Java 언어에는 이렇다 할 큰 변화는 없었다고 생각하는데 Project Loom(Java 언어에 경량화된 비동기 기능을 Java에 추가하기 위한 프로젝트)이 추진되면서 오랜만의 큰 혁신이 다가왔다는 생각이다. 기본 컨셉 기존의 코드, 로깅, 디버깅 툴들을 최대한 호환시키면서 경량화된 스레드를 지원한다. 개발자는 비즈니스 로직에만 집중하면서 Blocking IO에 대한 성능을 비약적으로 향상시킬 수 있다. 기존 스레드는 스레드 수의 제약이 컸던 반면 가상 스레드는 백만개까지도 큰..