가상 스레드와 구조화된 동시성 예제가 실행되는 순서
블로킹 작업마다 가상 스레드 생성에서 시작해 Future 완료 뒤 어휘 범위에서 executor 종료까지 값과 책임이 이동한다.
-
1
블로킹 작업마다 가상 스레드 생성
Executors.newVirtualThreadPerTaskExecutor나 Thread.startVirtualThread를 사용합니다.
-
2
대기 동안 carrier를 다른 작업에 양보
DB 연결, 외부 API 허용량처럼 병목 자원 앞에 세마포어나 연결 풀을 둡니다.
-
3
Future 완료 뒤 어휘 범위에서 executor 종료
가상 스레드 수가 많으면 스레드별 큰 상태가 메모리를 키울 수 있습니다.
실행 순서 각 블로킹 작업은 별도 가상 스레드에서 실행되며 결과의 isVirtual이 모두 true입니다.