- Spring boot 3.2 부터 적용
- 자바 기존 스레드는 Platform thread 라고 칭하게 되었다.
기존의 플랫폼 스레드는 운영체제의 스레드에 종속적이다. ⇒ 성능을 뽑아내기 위해 컴퓨팅 비용이 듦
코틀린의 코루틴은 자바보다 성능이 월등히 좋았음
기존 플랫폼 스레드는
운영체제가 자바에 빌려준 스레드는 점유되고 운영체제가 회수할 수 없게되어있다.
이걸 해결하려면 비동기로 돌려야하는데 그럼 데이터의 정합성이 깨짐
가상스레드
가상스레드는 jvm 스레드와 1:N으로 매칭된다.
성능을 8~10배 끌어올림
- 기존의 자바와 문법을 동일하게 사용할 수 있어서 java21버전만 올려주면 사용할 수 있는 셈.
- 자바에서만 가상 존재하는 스레드이기 떄문에 운영체제에 종속되지 않는다.
- vt에서 I/O작업을 호출하면 java runtime에서 non-blocking os 호출을 수행하고 vt를 자동으로 일시 중단한다.
- 생성 비용이 저렴하고 무한대로 풍부한 스레드로, 수명이 짧고 호출 스택이 얇으며, 단일 http 호출 또는 단일 jdbc 쿼리 정도만 수행하는 것으로 인식될 정도로 변화에 비해 느껴지는 영향은 적다.