← 질문 목록
#400깊이 0
가상 스레드는 왜 플랫폼 스레드보다 스루풋이 높은가?
언어 · 런타임
답변 연습
내 답변 적어보기접힘
이 브라우저에 자동 저장 · 0자
모범답안 확인하기내 답변 뒤에 열어보세요
I/O 대기 시 OS 스레드를 점유하지 않고 경량 스케줄링을 수행하기 때문이다.
가상 스레드→캐리어 스레드
마운트하여 작업 수행
가상 스레드→OS
I/O 요청 발생 및 블로킹
가상 스레드→캐리어 스레드
언마운트하여 OS 스레드 반납
다른 가상 스레드→캐리어 스레드
빈 OS 스레드에 마운트하여 실행
기존 플랫폼 스레드는 OS 스레드와 1:1로 매핑된다. 스레드 생성 비용이 크고 I/O 대기 중에도 OS 스레드를 그대로 점유한다.
가상 스레드는 JVM이 관리하는 경량 스레드다. I/O 블로킹이 발생하면 캐리어 스레드에서 언마운트되어 대기한다. 그동안 다른 가상 스레드가 해당 OS 스레드를 사용한다.
다만 CPU 연산 중심 작업에서는 성능 이점이 없다. synchronized 구문으로 스레드가 고정되는 핀드 상태를 피해야 한다.