가상 스레드 소개: Java 동시성에 대한 새로운 접근 방식
가상 스레드는 기존 자바 스레드와 매우 유사한 코드를 사용하지만, JVM 수준에서 구현됨.
가상 스레드는 애플리케이션 코드에서 시스템 자원 할당의 책임을 제거하고 JVM에 이를 맡김
자바 21에서 처음으로 도입된 가상 스레드는 프로젝트 룸의 일부이며, 자바 20부터 JVM의 공식 부분이 됨.
가상 스레드는 운영 체제 프로세스와 애플리케이션 수준의 동시성 사이에 추상화 계층을 도입.
애플리케이션은 가상 스레드를 인스턴스화하고 JVM이 이를 처리하기 위한 컴퓨트 자원을 할당.
가상 스레드는 Go 언어의 고루틴과 유사. 가상 스레드를 사용할 때 JVM은 애플리케이션의 가상 스레드가 대기 중일 때만 컴퓨트 자원을 할당할 수 있음.
가상 스레드는 스레드 풀링의 한 형태로 볼 수 있으며, 서버의 확장성을 크게 향상시킬 수 있음.
가상 스레드를 사용하는 두 가지 주요 방법은 Thread.startVirtualThread(Runnable r)와 실행자를 사용하는 것.
가상 스레드를 사용하는 최선의 방법 중 하나는 데이터 저장소와 같은 자원에 접근할 때 스레드 풀에 한계를 두는 대신 세마포어를 사용하는 것.
가상 스레드는 항상 데몬 스레드이며, 우선순위를 변경할 수 없음. 기존 코드베이스에 쉽게 적용할 수 있도록 의도적으로 설계.
서버와 같은 애플리케이션에 가장 큰 영향을 미칠 것으로 예상되며, 이는 서버 사용자에게 투명하게 적용될 수 있음.
가상 스레드는 JVM에 큰 변화를 가져오며, 동시성을 다루는 동기적 프로그래밍 패러다임으로의 복귀를 의미할 수 있음.
