Community

๐Ÿ’ก Virtual Thread์˜ ๊ธฐ๋ณธ ๊ฐœ๋… ์ดํ•ดํ•˜๊ธฐ

Naver D2 ์—์„œ JDK21 ์— ์ •์‹ ๋„์ž…๋œ Virtual Thread ์˜ ๊ธฐ๋ณธ ๊ฐœ๋…์„ ์ž์„ธํžˆ ์„ค๋ช…ํ•œ ๊ธ€์„ ์˜ฌ๋ ค์ฃผ์…”์„œ ๊ณต์œ ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๊ฐ„๋‹จํžˆ ์ •๋ฆฌํ•ด๋ณด์ž๋ฉด, JDK21 ์— ์ •์‹ ๋„์ž…๋œ Virtual Thread๋Š” ๊ธฐ์กด์˜ KLT(kernel-level thread)์™€ ULT(user-level thread)๋ฅผ 1:1 ๋งคํ•‘ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” JVM์˜ ์Šค๋ ˆ๋“œ ๋ชจ๋ธ์„ ๊ฐœ์„ ํ•œ, ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐ€์ƒ ์Šค๋ ˆ๋“œ๋ฅผ ํ•˜๋‚˜์˜ ๋„ค์ดํ‹ฐ๋ธŒ ์Šค๋ ˆ๋“œ์— ํ• ๋‹นํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค. ๊ธฐ์กด Java ์˜ Thread ๋ชจ๋ธ์€ java.util.concurrent.ExecutorService ๋ฅผ ๋‘์–ด JVM ๋‚ด๋ถ€์—์„œ java.lang.Thread ๊ฐ์ฒด๋ฅผ ๊ด€๋ฆฌ/์‹คํ–‰ ํ•ฉ๋‹ˆ๋‹ค. ExecutorService ๋ฅผ ํ†ตํ•ด ์Šค์ผ€์ค„๋ง๋˜๋Š” java.lang.Thread ๊ฐ์ฒด๋ฅผ ๋“ค์—ฌ๋‹ค๋ณด๋ฉด JVM ์— ์กด์žฌํ•˜๋Š” start0 ํ•จ์ˆ˜๋ฅผ JNI(Java Native Interface) ๋ฅผ ํ†ตํ•ด ํ˜ธ์ถœํ•˜๋„๋ก ๋˜์–ด์žˆ๊ณ , JVM ์—์„œ ์„ค์น˜๋œ ๊ฐ ๋จธ์‹  OS ์— ๋งž๊ฒŒ ์ปค๋„ ์Šค๋ ˆ๋“œ๋ฅผ ๋งŒ๋“ค์–ด ์‹คํ–‰ํ•˜๋„๋ก ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค. Virtual Thread ๋Š” ๊ธฐ์กด KLT(1) : ULT(1)์˜ ๊ตฌ์กฐ์ธ ๊ธฐ์กด Java Thread ์™€ ๋‹ค๋ฅด๊ฒŒ KLT(1) : ULT(1) : Virtual Thread(N)์˜ ๊ตฌ์กฐ๋กœ ์‚ฌ์šฉ๋˜๋Š” ํ˜•ํƒœ์ž…๋‹ˆ๋‹ค. Heap ์— ์ˆ˜๋งŽ์€ Virtual Thread๋ฅผ ํ• ๋‹นํ•ด๋†“๊ณ , ํ”Œ๋žซํผ ์Šค๋ ˆ๋“œ์— ๋Œ€์ƒ Virtual Thread ๋ฅผ ๋งˆ์šดํŠธ/์–ธ๋งˆ์šดํŠธํ•˜์—ฌ ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ํ•˜๋Š”๋ฐ์š”, ์ด๋ฅผ ํ†ตํ•ด ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋Š” ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ ๋น„์šฉ์„ ์ค„์ด๋„๋ก ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ด์ฒ˜๋Ÿผ Virtual Thread ๋Š” ์Šค๋ ˆ๋“œ์˜ ํฌ๊ธฐ์™€ ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ ๋น„์šฉ์ด ๋งŽ์ด ๊ฐ์†Œํ•œ ๋ชจ๋ธ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ์กด์— Netty/WebFlux ๋“ฑ๊ณผ ๊ฐ™์€ ๋น„๋™๊ธฐ ์†”๋ฃจ์…˜ ๋Œ€๋น„ Spring MVC/Tomcat ๋“ฑ์—์„œ ๋‚˜ํƒ€๋‚ฌ๋˜ ๋‹จ์ ์ด ๋งŽ์ด ๊ฐœ์„ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Virtual Thread ์™€ ๊ด€๋ จ๋œ ์ข€ ๋” ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๊ณต์œ ๋“œ๋ฆฐ ์›๋ฌธ ๋‚ด์šฉ๊ณผ ํ•จ๊ป˜๋ณด๋ฉด ์ข‹์€ ๊ธ€์„ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”. ๐Ÿ“š ์›๋ฌธ https://d2.naver.com/helloworld/1203723 ๐Ÿ“š ํ•จ๊ป˜๋ณด๋ฉด ์ข‹์€ ๊ธ€ * ๐Ÿ’ก Java ์˜ Project Loom ์ด ๋งŒ๋“ค์–ด์ง€๊ณ  ์žˆ์–ด์š”! ์กฐ๊ธˆ๋งŒ ๊ธฐ๋‹ค๋ ค์ฃผ์„ธ์š”!: https://careerly.co.kr/comments/63588 * ๐ŸŒˆ ํ•จ์ˆ˜์—๋„ ์ƒ‰๊น”์ด ์žˆ๋Š”๊ฑธ ์•„์‹œ๋‚˜์š”?: https://careerly.co.kr/comments/63069 * ๐ŸŽ‰ Java ๊ฐ€์ƒ ์Šค๋ ˆ๋“œ๊ฐ€ JDK 21 ์— ์ •์‹ ์ง€์› ๋ฉ๋‹ˆ๋‹ค: https://careerly.co.kr/comments/82046 * ๐Ÿ€ Spring 6.1 ๋ถ€ํ„ฐ JDK 21 ์ด ์ง€์›๋ฉ๋‹ˆ๋‹ค ๐ŸŽ‰: https://careerly.co.kr/comments/89053 * ๐Ÿš€ Java์˜ ๋ฏธ๋ž˜, Virtual Thread: https://careerly.co.kr/comments/96595

์•Œ๋ฆผ

์•Œ๋ฆผ์ด ์—†์Šต๋‹ˆ๋‹ค