[Java] Virtual Thread
Virtual Thread๋ Java 19๋ถํฐ ํ๋ฆฌ๋ทฐ๋ก ์คํ์ค์ธ ๊ฒฝ๋ ์ค๋ ๋ ๊ธฐ๋ฅ์ด๋ค.
Java 20์์๋ ํ๋ฆฌ๋ทฐ๋ก ๋์๋๋ฐ, ์ธ์ ์์ ํ๋ ์ง๋ ๋ชจ๋ฅด๊ฒ ๋ค...
๊ทธ๋์ ์์ง์ ์ ๋๋ก ์ธ ์ ์๋ ๊ธฐ๋ฅ์ด ์๋๋ค.
์ด๋ฐ๊ฒ ๋์ฌ ์์ ์ด๋ ๊ฒ๋ง ์๋ฉด ๋๋ค.
์ด๊ฒ ๋ญ๊ฐ?
๊ธฐ์กด์ ์๋ฐ์์ ์ ๊ณต๋๋ Thread ๊ธฐ๋ฅ์ ์ง์ง "๋ค์ดํฐ๋ธ ์ค๋ ๋"๋ค.
๋ค์ดํฐ๋ธ ์ค๋ ๋๋ ์ง์ง ์ค๋ ๋๋ฅผ ๋์ฐ๋๋ฐ, ์ด๊ฑด ์ต์ ํ๋ ๋๊ธฐํ์ ์์ด์ ์์ค์ด๋ ๋นํจ์จ, ์ํ์ฑ์ด ๊ทน์ฌํ ํธ์ด๋ค.
๊ทธ์ ๋ฐํด ์์ฆ ๋๋๋๊ณ ์๋ "๊ฒฝ๋ ์ค๋ ๋"๋ ์ฑ๊ธ ์ค๋ ๋์ ๊ฐ์ง ์ค๋ ๋๋ฅผ ์ฌ๋ฌ๊ฐ ๋์์ ํธ๋ค๋งํ๋ ๋ฐฉ๋ฒ๋ก ์ด๋ค. ๋ค์ดํฐ๋ธ ์ค๋ ๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋นํด ์ต์ ํ๊ฐ ์ฝ๊ณ ๊ฐ๋ณ๋ค๋ ์ฅ์ ์ด ์๋ค. ์ค๋ ๋ ๊ฐ์ ์ปจํ
์คํธ ์ค์์นญ ๋น์ฉ์ด ์ ๊ณ , ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋๋จน๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ๋ฆฌ๊ณ ๊ฒฝ์ฐ์ ๋ฐ๋ผ์๋ ์ง์ง ๋ค์ดํฐ๋ธ ์ค๋ ๋๋ฅผ ๋์์ ํธ๋ค๋งํ๊ธฐ๋ ํ๋ค.
Go์ ๊ณ ๋ฃจํด, Rust์ tokio.rs, ์ฝํ๋ฆฐ์ ์ฝ๋ฃจํด, C#์ TPL ๋ฑ์ด ์ด๋ฌํ ์งํฅ์ ์ ๊ฐ๊ณ ์๊ณ , ๋ ์ฑ๊ณตํ๋ค.
์๋ฐ์์๋ ์ด์ ์ผ ์ด๋ฐ๊ฑธ ๋์
ํ๋ ค๋ ์์ง์์ด ๋์จ ๊ฒ์ด๋ค.
์ฌ์ค ์ด๋ฐ "๊ทธ๋ฆฐ ์ค๋ ๋"์ ๊ฐ๋
์ ์๋ฐ๊ฐ ๋ง๋ ์ฉ์ด์๋๋ฐ... ๋๊ณ ๋์ ์์ ์ผ๋ก ํ๊ทํ๋ ๋๋์ด๋ค.
์๋ฌดํผ ๊ทธ๋ฆผ์ผ๋ก ํํํ๋ฉด ์ด๋ฐ ํํ๋ค.
์ถ์ฒ How to Use Java 19 Virtual Threads | by omgzui | Javarevisited | Medium
์ฌ์ฉ๋ฒ
์ฐ์ , stable ๊ธฐ๋ฅ์ด ๋๊ธฐ ์ ๊น์ง๋ ํ๋ฆฌ๋ทฐ ๊ธฐ๋ฅ์ ์ผ์ผ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
VM ์ต์ ์๋ --enable-preview์ ๋ฃ์ด์ฃผ๊ณ

์ปดํ์ผ ์ต์ ์๋ --enable-preview๋ฅผ ๋ฃ์ด์ค์ผ ํ๋ค.

๊ทธ๋ผ ๋์ถฉ ์ด๋ฐ์์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
ofVirtual ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ์ค๋ ๋์ฉ ๊ฐ์ฒด๋ฅผ ๋ฐ์์จ๋ค.
๊ทธ๋ฌ๋ฉด start ๋ฑ์ ํจ์๋ก ์์์ ํ๊ณ , Thread ๊ฐ์ฒด๋ฅผ ๋ฐ์์ฌ ์ ์๋ค.
start๊ฐ ๋ฐํํ๋ ๊ฒ๋ ๊ธฐ์กด์ Thread๋ฅผ ์์๋ฐ๋ ๊ฐ์ฒด์ธ์ง๋ผ ๊ธฐ์กด๊ณผ ๋์ผํ ๋ฐฉ์์ผ๋ก ํธ๋ค๋งํ ์ ์๋ค.


ํน์, startVirtualThread ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ์ ์ฝ๋๋ฅผ ๋ ์งง๊ฒ ์ค์ผ ์ ์๋ค.
๋์์ ๋์ผํ๋ค.
์ฐธ์กฐ
https://jenkov.com/tutorials/java-concurrency/java-virtual-threads.html
https://medium.com/javarevisited/how-to-use-java-19-virtual-threads-c16a32bad5f7
https://blogs.oracle.com/javamagazine/post/java-loom-virtual-threads-platform-threads