728x90
33일차
학습 목표
- 새로운 스레드 API를 활용하여, VO 바운드 작업과 CPU 바운드 작업에 적합한 동시성 프로그래밍 모델을 설계하고 구현할 수 있다.
- Executors 및 Virtual Thread Executor를 활용하여, 다양한 유형의 작업을 분리 처리하는 병렬 구조를 구현할 수 있다.
- 실행 결과를 기반으로 Virtual Thread의 장단점을 분석하고, 실전 환경에 적합한 스레드 모델을 선택할 수 있다.
1. VO 바운드 / CPU 바운드 작업에 적합한 모델 구현
플랫폼 스레드의 경우 멀티코어 활용, 안정적 병렬 처리와 같은 이유로 CPU 바운드 작업에 적합하다.
가상 스레드는 대기 중인 스레드를 JVM이 다른 작업으로 대체해주기 때문에 I/O 바운드 작업에 적합하다.
2. Executors 및 VirtualThreadExecutor 사용
Thread.startVirtualThread()
를 직접 생성할 수 있다.
Executors.newVirtualThreadPerTaskExecutor()
를 통한 병렬 처리 구조 구현할 수 있다.
기존 Executors.newFixedThreadPool()
비교하여 차이점과 장 단점을 알 수 있다.
3. 실행 결과를 기반으로 장단점 분석 및 모델 선택
플랫폼 스레드의 경우 작업이 큐에 쌓이기 때문에 실행 시간이 증가한다.
가상 스레드의 경우 수만 개 이상의 병렬 실행이 가능해 실행 시간이 짧다.
스레드의 경우 사용할일이 별로 없어서 이론 부분만 인지하고 있는 정도였는데 요즘 웹 앱을 비롯해서 스레드를 백엔드에서도 종종 쓰이고 있기 때문에, 잘 알아둬야 할 것 같다.
Java의 경우 스레드가 2종류로 나뉜다는것과 각각의 스레드마다 강점이 다른만큼 잘 구분하여 적절하게 사용해야할것 같다.
그렇지 못할 경우 주어진 인스턴스의 성능을 제대로 활용하지 못하고 낮은 효율을 보여줄 수 있기 때문이다.
금일 학습한 내용들과 개인 학습한 내용을 기반으로 아래 정리해뒀다.
728x90
'부트캠프' 카테고리의 다른 글
[멋쟁이사자] 백엔드 - 35일차 회고록 (0) | 2025.04.24 |
---|---|
[멋쟁이사자] 백엔드 - 34일차 회고록 (0) | 2025.04.20 |
[멋쟁이사자] 백엔드 - 32일차 회고록 (0) | 2025.04.18 |
[멋쟁이사자] 백엔드 - 31일차 회고록 (0) | 2025.04.15 |
[멋쟁이사자] 백엔드 - 28, 29, 30일차 회고록 (0) | 2025.04.10 |