Item 76. Failure Atomic
κ°λ₯ν ν μ€ν¨ μμμ μΌλ‘ λ§λ€λΌ
μ€ν¨ μμμ (failure-atomic)μ΄λ νΈμΆλ λ©μλκ° μ€ν¨νλλΌλ ν΄λΉ κ°μ²΄λ λ©μλ νΈμΆ μ μνλ₯Ό μ μ§νλ κ²μ λ§νλ€. λ©μλλ₯Ό μ€ν¨ μμμ μΌλ‘ λ§λλ κ°μ₯ κ°λ¨ν λ°©λ²μ λΆλ³ κ°μ²΄λ‘ μ€κ³νλ κ²μ΄λ©°, λΆλ³ κ°μ²΄λ μ€ν¨ μμμ μ΄κΈ° λλ¬Έμ λ³λ€λ₯Έ λ Έλ ₯μμ΄ μ€ν¨ μμμ μΌλ‘ λ§λ€ μ μλ€.
κ°λ³ κ°μ²΄ λ©μλμ μ€ν¨ μμμ± λ³΄μ₯ λ°©λ²
1. 맀κ°λ³μ μ ν¨μ± κ²μ¬
λ§μ½ κ°λ³ κ°μ²΄μ λ©μλλ₯Ό μ€ν¨ μμμ μΌλ‘ λ§λλ κ°μ₯ μΌλ°μ μΈ λ°©λ²μ μμ μνμ μμ 맀κ°λ³μμ μ ν¨μ±μ κ²μ¬νμ¬ μμΈμ κ°λ₯μ±μ μ€μ΄λ κ²μ΄λ€.
size == 0
κ²μ¬ μμΈλ₯Ό λμ§μ§ μλλΌλ elements[--size]
μμ ArrayIndexOutOfBoundsException
μμΈκ° λ°μνκ² λλ€.
νμ§λ§ ν΄λΉ λΌμΈκΉμ§ κ°κ² λλ©΄ size
κ°μ΄ μ΄λ―Έ κ°μλκΈ° λλ¬Έμ κ°μ²΄μ μνκ° λ³κ²½λμ΄ μ€ν¨ μμμ μ΄μ§ μκ² λλ€.
2. μ€ν¨ν κ°λ₯μ±μ΄ μλ λͺ¨λ μ½λλ₯Ό, κ°μ²΄μ μνλ₯Ό λ°κΎΈλ μ½λλ³΄λ€ μμ λ°°μΉ
μ€μ μ°μ°μ μννκΈ° μ μ μΈμμ μ ν¨μ± κ²μ¬ ν μ μμ λ μ¬μ©νλ λ°©λ²μΌλ‘,
TreeMap
μ μ΄λ€ κΈ°μ€μΌλ‘ μ λ ¬νκ² λλλ°, λ€λ₯Έ νμ
μ μμλ₯Ό μΆκ°νλ € νλ©΄ ClassCastException
μμΈλ₯Ό λ°μμν€κ² λλ€.
3. μμ 볡μ¬λ³Έ μ¬μ©
μμ 볡μ¬λ³Έμ λ§λ€μ΄ μμ μ μννκ³ , μμ μ΄ μ±κ³΅μ μΌλ‘ μλ£λλ©΄ μλ κ°μ²΄μ κ΅μ²΄νλ λ°©λ²μ΄λ€. μμ μ μ₯μμ μ μ₯νμ¬ μμ νλ κ² λΉ λ₯Ό λ μ μ©νκΈ° μ’μΌλ©°, μμ μ΄ μ€ν¨νλλΌλ μλ κ°μ²΄λ λ³νμ§ μκΈ° λλ¬Έμ μ€ν¨ μμμ μΌλ‘ λ§λ€ μ μλ€.
4. 볡ꡬ μ½λ μμ±
μμ λμ€ λ°μνλ μ€ν¨λ₯Ό κ°λ‘μ±λ 볡ꡬ μ½λλ₯Ό μμ±νμ¬ μμ μ μνλ‘ λλ리λ λ°©λ²μ΄λ€. μ£Όλ‘ λ΄κ΅¬μ±(durability)μ 보μ₯ν΄μΌ νλ μλ£κ΅¬μ‘°μ μ μ©νκΈ° μ’μΌλ©°, 볡ꡬ μ½λλ₯Ό μμ±νλ κ²μ΄ μ΄λ ΅κ³ , μμ£Ό μ°μ΄λ λ°©λ²μ μλλ€.
μ€ν¨ μμμ±μ λ¬μ±νκΈ° μ΄λ €μ΄ κ²½μ°
μ€ν¨ μμμ±μ μΌλ°μ μΌλ‘ κΆμ₯λμ§λ§, νμ μνν΄μΌ νλ κ²μ μλλ©° μλμ κ°μ κ²½μ°μλ λ¬μ±νκΈ° μ΄λ ΅κ±°λ νμ§ μλ κ²μ΄ μ’μ μ μλ€.
λ μ€λ λκ° λκΈ°ν μμ΄ κ°μ κ°μ²΄λ₯Ό λμμ μμ ν λ
μ€ν¨ μμμ±μ λ¬μ±νκΈ° μν λΉμ©μ΄λ 볡μ‘λκ° λ무 ν° κ²½μ°
μ€ν¨ μμμ±μ νμ μ§μΌμΌ νλ κ²μ μλμ§λ§ λ§μ½ μ§ν€μ§ λͺ» νμ κ²½μ°μ API μ€λͺ μ λͺ μν΄μΌ νλ€.
Last updated
Was this helpful?