Item 82. Thread Safety Level
μ€λ λ μμ μ± μμ€μ λ¬ΈμννλΌ
λ©μλμ synchronized
νμ μκ° μλ€κ³ ν΄μ μ€λ λ μμ μ±μ΄ νμ€ν κ²μ΄ μλλ€.
λ¨μ synchronized
μ λ¬΄λ‘ μ€λ λ μμ μ±μ νλ¨ν μ μμΌλ©°, μ€λ λ μμ μ±μλ μμ€μ΄ λλκΈ° λλ¬Έμ κ·Έ μμ€μ λν΄ μ°μ μ μμμΌ νλ€.
μλλ μΌλ°μ μΈ κ²½μ°μ λν΄ μ€λ λ μμ μ± μμ€μ΄ λμ μμΌλ‘ λμ΄ν κ²μ΄λ€.
λΆλ³(immutable)
μμμ κ°μμ μΈλΆ λκΈ°νκ° νμ μμ
String, Long, BigInteger λ± μ‘΄μ¬
무쑰건μ μ€λ λ μμ (unconditionally thread-safe)
μμ λ μ μμΌλ, λ΄λΆμμ λκΈ°νλ₯Ό μ²λ¦¬νμ¬ μΈλΆμμ λ³λμ λκΈ°νκ° νμ μμ
AtomicLong, ConcurrentHashMap λ± μ‘΄μ¬
μ‘°κ±΄λΆ μ€λ λ μμ (conditionally thread-safe)
μΌλΆ λ©μλλ μΈλΆμμ λκΈ°νκ° νμ μμΌλ, μΌλΆ λ©μλλ μΈλΆμμ λκΈ°νκ° νμν¨
Collections.synchronized λνΌ λ©μλκ° λ°νν 컬λ μ λ€μ΄ ν΄λΉ
μ€λ λ μμ νμ§ μμ(not thread-safe)
μΈμ€ν΄μ€κ° μμ λ μ μμΌλ©°, λμμ μ¬μ©νκΈ° μν΄μ λ©μλ νΈμΆμ μΈλΆ λκΈ°ν 맀컀λμ¦μΌλ‘ κ°μΈμΌ ν¨
ArrayList, HashMap λ± κΈ°λ³Έ 컬λ μ λ€μ΄ ν΄λΉ
μ€λ λ μ λμ (thread-hostile)
μΈλΆμμ λκΈ°νλ₯Ό μ²λ¦¬ν΄λ μ€λ λ μμ μ±μ 보μ₯ν μ μμ
λμμ±μ κ³ λ €νμ§ μκ³ μ€κ³λ ν΄λμ€λ€μ΄ ν΄λΉνλ©°, μΌλ°μ μΌλ‘ κ³ μ³μ Έμ μ¬λ°°ν¬ λκ±°λ deprecated λλ κ²½μ°κ° λ§μ
APIλ₯Ό μμ±νκ³ μμ νκ² μ¬μ©νκΈ° μν΄μ , μμ μ€λ λ μμ μ± μμ€μ λͺ μν΄μ£Όλ κ²μ΄ μ’λ€. νΉν μλμ κ²½μ°μ μ£Όμνκ±°λ λ°λμ λ¬Έμνν΄μ£Όλ κ²μ΄ μ’λ€.
μ‘°κ±΄λΆ μ€λ λ μμ ν΄λμ€μΈ κ²½μ° μ΄λ€ μμλ‘ νΈμΆν λ μΈλΆ λκΈ°νκ° νμνμ§, κ·Έ μμλ‘ νΈμΆνκΈ° μν΄ μ΄λ€ λ½μ μ¬μ©ν΄μΌ νλμ§ λͺ μν΄μΌ ν¨
μ μ ν©ν°λ¦¬μΈ κ²½μ° μμ μ΄ λ°ννλ κ°μ²΄μ μ€λ λ μμ μ± μμ€μ λ¬Έμνν΄μΌ ν¨
μΈλΆ Lock μ 곡과 μλΉμ€ κ±°λΆ κ³΅κ²©
ν΄λμ€μμ μΈλΆμμ μ¬μ©ν μ μλ λ½μ μ 곡νλ©΄ ν΄λΌμ΄μΈνΈμμ μ¬λ¬ κ°μ λ©μλ νΈμΆμ μμμ μΌλ‘ μνν μ μκ² λλ€. νμ§λ§ μ΄ μ μ°μ±μΌλ‘ μΈν΄, λ΄λΆμμ μ²λ¦¬νλ λμμ± μ μ΄ λ§€μ»€λμ¦μ νΌμ©ν μ μλ€λ μ κ³Ό μλΉμ€ κ±°λΆ κ³΅κ²©μ λ ΈμΆλ μ μλ€λ μ μ μ£Όμν΄μΌ νλ€. (** μλΉμ€ κ±°λΆ κ³΅κ²©: ν΄λΌμ΄μΈνΈμμ λ½μ νλν μ±λ‘ λμ§ μλ κ²)
synchornized
λ©μλλ ν΄λΉ μΈμ€ν΄μ€λ ν΄λμ€μ λν΄ λ½μ κ±Έκ² λλλ°, κ·Έλ κ² λλ©΄ ν΄λΌμ΄μΈνΈκ° λ½μ νλν μ±λ‘ λμ§ μμ μ μλ€.
λλ¬Έμ μλΉμ€ κ±°λΆ κ³΅κ²©μ λ§κΈ° μν΄μ synchornized
λ©μλ λμ λΉκ³΅κ° λ½ κ°μ²΄λ₯Ό μ¬μ©ν΄μΌ νλ€.
μμ κ°μ΄ λΉκ³΅κ° λ½ κ°μ²΄λ₯Ό private
+ final
λ‘ μ μΈνλ©΄ ν΄λΌμ΄μΈνΈκ° κ°μ²΄ λκΈ°νμ κ΄μ¬ν μ μκ² λλ©΄μ μλΉμ€ κ±°λΆ κ³΅κ²©μ λ§μ μ μλ€.
λΉκ³΅κ° λ½ κ°μ²΄ κ΄μ©κ΅¬λ 무쑰건μ μ€λ λ μμ ν΄λμ€μλ§ μ¬μ©ν μ μμΌλ©°, μ‘°κ±΄λΆ μ€λ λ μμ ν΄λμμμ νμν λ½μ΄ 무μμΈμ§ ν΄λΌμ΄μΈνΈμμ μλ €μ€μΌ νλ―λ‘ μ¬μ©ν μ μλ€.
Last updated
Was this helpful?