item 84 dodo4513 - JAVA-JIKIMI/EFFECTIVE-JAVA3 GitHub Wiki
μμ΄ν
84 νλ‘κ·Έλ¨μ λμμ μ€λ λ μ€μΌμ€λ¬μ κΈ°λμ§ λ§λΌ
- μ¬λ¬ μ€λ λκ° μ€ν μ€μ΄λ©΄ μ΄μ체μ μ μ€λ λ μ€μΌμ€λ¬κ° μ΄λ€ μ€λ λλ₯Ό μΌ λ§λ μ€λ μ€νν μ§ μ νλ€.
μ μμ μΈ μ΄μ체μ λΌλ©΄ μ΄ μμ
μ 곡μ νκ² μν νμ§λ§ ꡬ체μ μΈ μ€μΌμ€λ§ μ μ±
μ μ΄μ체μ λ§λ€ λ€λ₯Ό μ μλ€.
μ νμ±μ΄λ μ±λ₯μ΄ μ€ λ λ μ€μΌμ€λ¬μ λ°λΌ λ¬λΌμ§λ νλ‘κ·Έλ¨μ΄λΌλ©΄ λ€λ₯Έ νλ«νΌμ μ΄μνκΈ° μ΄λ ΅λ€.
κ²¬κ³ νκ³ λΉ λ¦Ώνκ³ μ΄μμ± μ’μ νλ‘κ·Έλ¨μ μμ±νλ κ°μ₯ μ’μ λ°©λ²
- μ€ν κ°λ₯ν μ€λ λμ νκ· μ μΈ μλ₯Ό νλ‘μΈμ μλ³΄λ€ μ§λμΉκ² λ§μμ§μ§ μλ λ‘ νλ κ²μ΄λ€.
μ€ν μ€ λΉκ° λ μ€λ λλ€μ 맑μ μμ
μ μλ£ν λκΉμ§ κ³μ μ€νλλλ‘ λ§λ€μ.
μ€ν κ°λ₯ν μ€λ λ μλ₯Ό μ κ² μ μ§νλ μ£Όμ κΈ°λ²
- κ° μ€λ λκ° λ¬΄μΈκ° μ μ©ν μμ
μ μλ£ν νμλ λ€μ μΌκ±°λ¦¬κ° μκΈΈ λκΉμ§ λκΈ°νλλ‘ νλ κ² μ΄λ€.
μ€λ λλ λΉμ₯ μ²λ¦¬ν΄μΌ ν μμ
μ΄ μλ€λ©΄ μ€νλΌμλ μ λλ€.
- μ€λ λ ν ν¬κΈ°λ₯Ό μ μ ν μ€μ νκ³ μμ
μ μ§§κ² μ μ§νλ©΄ λλ€.
λ¨, λ무 짧μΌλ©΄ μμ
μ λΆλ°°νλ λΆλ΄μ΄ μ€νλ € μ±λ₯μ λ¨μ΄λ¨λ¦΄ μλ μλ€.
μ€λ λλ μ λ λ°μ λκΈ°(busy waiting) μνκ° λλ©΄ μ λλ€
public class SlowCountDownLatch {
private int count;
public SlowCountDownLatch(int count) {
if (count < 0)
throw new IllegalArgumentException(count + " < 0"); this.count = count;
}
public void await() {
while (true) {
synchronized(this) {
if (count == 0)
return;
}
}
}
public synchronized void countDown() {
if (count != 0)
count--;
}
}
- 곡μ κ°μ²΄ μ μνκ° λ°λ λκΉμ§ μ¬μ§ μκ³ κ²μ¬ν΄μλ μ λλ€λ λ»μ΄λ€.
- λ°μ λκΈ°λ μ€λ λ μ€μΌμ€λ¬μ λ³λμ μ·¨μ½ν λΏ μλλΌ, νλ‘μΈμμ ν° λΆλ΄μ μ£Όμ΄ λ€λ₯Έ μ μ©ν μμ
μ΄ μ€νλ κΈ°νλ₯Ό λ°ννλ€.
- μ΄ μκ° μ’ μ΅μ§μ€λ¬μ 보μΌμ§ λͺ¨λ₯΄μ§ λ§, νλ μ΄μμ μ€λ λκ° νμλ μμ΄ μ€ν κ°λ₯ν μνμΈ μμ€ν
μ ννκ² λ³Ό μ μλ€.
μ΄λ° μμ€ν
μ μ±λ₯κ³Ό μ΄μμ±μ΄ λ¨μ΄μ§ μ μλ€.