- 2021λ μΆμλ Java 17 μ΄ν 2λ λ§μ μΆμλ Javaμ 4λ²μ§Έ LTS(Long Term Support) λ²μ
- μ£Όμ λ³νλ λ€μκ³Ό κ°λ€.
- Sequenced Collections
- Virtual Thread
- Record, Switch κ°μ
- μ΄ κΈμμλ Virtual Threadμ λν΄ λ€λ£¬λ€.
- νλμ μ€λ λκ° νλμ OS μ€λ λμ 1:1 κ΄κ³λ₯Ό κ°μ§λ©°, λμΌνκ² λμν¨
- κ³ λΉμ©μ΄λ©°, κ°μκ° κ·Ήν μ νλμ΄ μμΌλ©°, I/O μμ μ μννλ©΄ blocking
- μ€λ λλ κ³ λΉμ©μ΄κΈ° λλ¬Έμ, νμν λλ§λ€ μμ±ν΄μ μ¬μ©νλ λμ
μ€λ λ νμ μΌμ κ°μ μ€λ λλ₯Ό ν λΉνκ³νμν λ κΊΌλ΄ μ°κ³ λ€ μ°λ©΄ λ€μ λ°ν - νλμ λλΆλΆμ μλ°μ μ¬μ©μ²μΈ μλ² μ ν리μΌμ΄μ
μ μ¬λ¬ I/O μμ
μ λλ°νλ©°, μ΄μ λ°λΌ μ±λ₯ μ νκ° λ°μ
- μ€λ λκ° I/O λκΈ° λ±μΌλ‘ μΈν΄ μ¬μ© λΆκ°λ₯νκ² λκ³ , μ€λ λ ν λ΄ λͺ¨λ μ€λ λκ° μ¬μ© λΆκ°λ₯νλ©΄ λ€μ μμ²λ€μ λκΈ° νμμ λκΈ°
- μ΄ λ¬Έμ λ₯Ό ν΄κ²°νμκ³ μ€λ λ ν λ΄ μ€λ λ μλ₯Ό λ리μλ, 물리μ μΌλ‘ νκ³κ° μμ
- μ΄λ¬ν λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ λΉλκΈ° I/O (reactor)κ° λμ
λλ μλλ μμμΌλ,
λ무 μ½λκ° μ΄λ ΅κ³μ½λ μ€ν νλ¦μ μμΈ‘νκΈ° μ΄λ €μμ§λλ¬Έμ λ‘ μ μ¬μ©λμ§λ μμ
- κΈ°μ‘΄ μ€λ λλ
νλ«νΌ μ€λ λ(Platform Thread)λΌλ λͺ μΉμΌλ‘, μ¬μ ν Thread Pool λ΄μ μ‘΄μ¬ - κΈ°μ‘΄ μ€λ λμ
λ€λλ€ κ΄κ³λ₯Ό κ°λ κ°μ μ€λ λκ° λμ λ¨ - κ°μ μ€λ λλ λ€μκ³Ό κ°μ νΉμ§μ κ°μ§
- κΈ°μ‘΄ μ€λ λλ³΄λ€ κ°λ²Όμ - μμ± λΉμ©, μ€μμΉ λΉμ©μ΄ μ λ ΄
- κΈ°μ‘΄ μ€λ λλ³΄λ€ ν¨μ¨μ - I/Oμ μν΄ OSμ€λ λκ° λμ§ μλλ‘ λμ
- Context Switching λΉμ©μ΄ λ μ μ
- λ©λͺ¨λ¦¬λ₯Ό λ μ¬μ©
- I/O blockingμ μν μκ° λλΉλ λ μ μ
- νλμ κ°μ μ€λ λκ° μ¬λ¬ νλ«νΌ μ€λ λμ μν΄ μ¬μ©λκΈ°λ νλ©°, νλμ νλ«νΌ μ€λ λλ μ¬λ¬ κ°μ μ€λ λλ₯Ό μ¬μ© (N:M)
- νλ«νΌ μ€λ λκ° μ¬μ© μ€μΈ κ°μ μ€λ λκ° I/Oμ μν΄ μλ΅ λκΈ° μνμ μ μ΄λ€λ©΄,
λ€λ₯Έ κ°μ μ€λ λλ₯Ό μ€ννμ¬ νλ«νΌ μ€λ λκ° λμ§ μλλ‘ ν¨ - λ°λΌμ, λκΈ°λ‘ λμνλλ‘ μ§μΈ μ½λλ
μ€μ λ‘λ λΉλκΈ°μ²λΌ λμνλλ‘ν μ μμ
Pinnedλ, κ°μ μ€λ λκ° μΊλ¦¬μ΄μ κ³ μ λλ νμμ λ§ν¨- μΊλ¦¬μ΄λ, κ°μ μ€λ λμ μ€ν μ£Όμ²΄λ‘ νλ‘μΈμμ λμΌνλ€κ³ 보면 λ¨
- κ°μ μ€λ λκ° μΊλ¦¬μ΄μ κ³ μ λλ©΄ ν΄λΉ κ°μ μ€λ λκ° blocking λμμ λ μ΄λ₯Ό μ€ν μ€μΈ νλ«νΌ μ€λ λλ ν¨κ» blocking
- μ¦, κΈ°μ‘΄ μ€λ λμ λμκ³Ό λμΌν΄μ§
- Pinned Threadλ λ κ°μ§ μν©μμ λ°μ
synchronizedμ¬μ©- λ€μ΄ν°λΈ λ©μλλ μΈλΆ ν¨μλ₯Ό μ¬μ©
- κ°μ μ€λ λμ κ°μλ λ§€μ° λ§μ
- μ΄ κ°μ μ€λ λλ§λ€ ThreadLocalμ μ¬μ©νκ²λλ©΄, κ·Έ ν¬κΈ°κ° μ무리 μλλΌλ μ°¨μ§νλ λ©λͺ¨λ¦¬μ μμ 무μν μ μκ² λ¨
- κ°μ μ€λ λμ μμ± λΉμ©μ λ§€μ° μ λ ΄
- λ°λΌμ νμ μλ§λ€ μμ±νλ κ²μ΄ λ³λμ μ€λ λ νμ μ¬μ©νλ κ²λ³΄λ€ κ°νΈ
- κΈ°μ‘΄ μ€λ λμ λ¬Έμ λ I/Oκ° λ°μν λ blockingμ΄ λ°μνλ€λ μ
- κ°μ μ€λ λκ° κ°μ ν κ² μμ μ΄ λΆλΆμΌλ‘, I/Oκ° λ°μν΄λ μ€λ λκ° wait μνκ° λλ λμ λ€λ₯Έ λμμ μ€νν μ μλλ‘ ν κ²
- λ°λΌμ μ½λ μ체λ₯Ό λ λΉ λ₯΄κ² μ€ννλ κ²μ μλλ©°, μ€νλ € CPUλ₯Ό μ¬μ©νλ λμμμλ Thread Switching λμμ΄ λ μμ£Ό λ°μνλ―λ‘ μ½κ° μ±λ₯μ΄ μ νλλ€κ³ λ³Ό μ μμ

