π λμμ±κ³Ό λ³λ ¬μ±
- λμμ± : νλμ νλ‘μΈμ€μμ μ¬λ¬ μ€λ λκ° λ§€μ° λΉ λ₯΄κ² λ²κ°μκ°λ©° μ€νλμ΄ λμμ μ€νλλ κ²μ²λΌ 보μ΄λ κ²
- λ³λ ¬μ± : λ©ν°μ½μ΄ νλ‘μΈμλ₯Ό μ΄μ©νμ¬ μ¬λ¬ νλ‘μΈμ€μμ μ¬λ¬ μ€λ λκ° μ€μ λ‘ λμμ μ€νλλκ²
π μλ° μ€λ λ μλͺ μ£ΌκΈ°(μν)
new, runnable, blocked, waiting, timed_waiting, terminated
π λ©λͺ¨λ¦¬ κ°μμ± λ¬Έμ
λ©ν°μ€λ λ νκ²½μμλ κ° μ€λ λκ° λ 립μ μΈ μΊμ λ©λͺ¨λ¦¬λ₯Ό κ°μ§κ³ μλ€.
κ° μ€λ λμμλ μ΄λ€ λ©λͺ¨λ¦¬ κ°μ μ κ·Όν λ, λ©μΈ λ©λͺ¨λ¦¬μ λ°λ‘ μ κ·Όνλ κ²μ΄ μλλΌ, μ€λ λμ μΊμλ©λͺ¨λ¦¬μ μ κ·Όμ νλ€.
κ·Έλ κΈ° λλ¬Έμ νλμ μ€λ λκ° λ³κ²½ν λ°μ΄ν°κ° λ€λ₯Έ μ€λ λ μΊμ λ©λͺ¨λ¦¬μ μ¦μ λ°μλμ§ μλ κ²½μ°κ° λ°μν μ μλ€.
μ΄κ²μ λ©λͺ¨λ¦¬ κ°μμ± λ¬Έμ λΌκ³ νλ€.
π Volatile ν€μλ
μλ°μμλ λ©λͺ¨λ¦¬ κ°μμ± λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ volatileμ΄λΌλ ν€μλλ₯Ό μ¬μ©νλ€.
volatile λ³μμ κ°μ μ½κ±°λ μΈ λμλ νμ μΊμλ©λͺ¨λ¦¬κ° μλ λ©μΈλ©λͺ¨λ¦¬μ λ°λ‘ μ κ·Όνκ² λλ€.
π λμμ± λ¬Έμ
μ¬λ¬ κ°μ μ€λ λκ° λμμ μ€νλ λ λ°μν μ μλ λ¬Έμ λ₯Ό λ§νλ€.
- μ¬λ¬ μ€λ λκ° λμμ κ°μ λ°μ΄ν°μ μ κ·Όνμ¬ μμ νλ κ²½μ°, λ°μ΄ν°μ μΌκ΄μ±μ΄ κΉ¨μ§ μ μλ€.
- μ¬λ¬ μ€λ λκ° λμμ μ€νλλ©΄μ λ°μ΄ν°μ κ°μ΄λ μνκ° μμκ³Ό λ€λ₯΄κ² λ³κ²½λ μ μλ€.
- λ°λλ½ λ°μ κ°λ₯
π synchronized ν€μλ
μλ°μμλ λμμ± λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ synchronized ν€μλλ₯Ό μ 곡νλ€.
λ©μλ, λΈλ‘ λλ κ°μ²΄μ μ μ©ν μ μμΌλ©°, λ©ν°μ€λ λ νκ²½μμ 곡μ μμμ μμ νκ² μ κ·Όν μ μλλ‘ ν΄μ€λ€.
π λμ λ°©μ
μλ°μμ λͺ¨λ μΈμ€ν΄μ€λ λͺ¨λν° λ½μ νλμ© κ°μ§κ³ μλ€.
μ΄λ€ μ€λ λκ° synchronized λ©μλλ λΈλ‘μ μ κ·Όνλ €λ©΄ ν΄λΉ μΈμ€ν΄μ€μ λͺ¨λν° λ½μ νλν΄μΌ νλ€.
λ§μ½ λͺ¨λν° λ½ νλμ μ€ν¨νλ©΄, ν΄λΉ μ€λ λλ λ½μ νλν λκΉμ§ 무νμ λκΈ°νλ€.
π₯ λͺ¨λν° λ½ μν
- λͺ¨λν° λ½μ Critical Section(μκ³κ΅¬μ)μ 보νΈνλ μν μ νλ€.
- μκ³ κ΅¬μμ΄λ 곡μ μμμ λν μ κ·Όμ΄ νμν μ½λ λΈλ‘μΌλ‘, ν λ²μ νλμ μ€λ λλ§ μ κ·Όν μ μλ μμμ΄λ€.
μ¬κΈ°μμλ synchronized μ½λλΈλμ λ§νλ€.
- λͺ¨λν° λ½μ νλν μ€λ λλ ν΄λΉ μΈμ€ν΄μ€μ μκ³ κ΅¬μμ λν΄ λ μ μ μΈ μ κ·Ό κΆνμ κ°μ§κ² λλ€.
- μ€λ λκ° μ€νμ λλ΄κ³ λͺ¨λν° λ½μ λ°ννλ©΄, λκΈ° μ€μΈ μ€λ λ μ€ νλκ° λ½μ νλνκ² λλ€.
π synchronized ν€μλλ μΈμ μ¬μ©ν΄μΌ ν κΉ?
- νλμ κ°μ²΄λ₯Ό μ¬λ¬ μ€λ λμμ λμμ μ¬μ©ν κ²½μ°
- staticμΌλ‘ μ μΈν κ°μ²΄λ₯Ό μ¬λ¬ μ€λ λμμ λμμ μ¬μ©ν κ²½μ°
π synchronized ν€μλμ λ¬Έμ μ
- μ΄λ€ μ€λ λκ° synchronized λ©μλλ λΈλ‘μ μ κ·Όνλ €κ³ ν λ, λͺ¨λν° λ½ νλμ μ€ν¨νλ€λ©΄
ν΄λΉ μ€λ λλ λͺ¨λν° λ½μ νλν λκΉμ§ blocked μνλ‘ λκΈ°νκ² λλ€.
- μ΄λ νμμμ μ€μ λ λΆκ°λ₯νκ³ , interrupt λ±μΌλ‘ λκΈ°μ€μΈ μ€λ λλ₯Ό κΉ¨μΈ μλ μλ€.
- μ¦ μ€λ λλ λͺ¨λν° λ½μ νλν λκΉμ§ 무νμ λκΈ°νκ² λκ³ , μ΄λ° μν©μμ λ°λλ½μ΄ λ°μν μ μλ€.
- λν λͺ¨λν°λ½μ΄ λ°νλμμ λμλ λκΈ° μ€λ λ μ€ μ΄λ€ μ€λ λκ° λ½μ νλν μ§ μ μ μμΌλ―λ‘ μ€λ λ κΈ°μ μν(starvaton)κ° λ°μν μ μλ€.