- κ³Όλν λκΈ°νλ λ€μκ³Ό κ°μ λ¬Έμ μ μ μΌκΈ°
- μμΈ‘ν μ μλ λμ (μλνμ§ μμ μμΈλ₯Ό λμ§κ±°λ, κ΅μ°©μνμ λΉ μ§)
- μ±λ₯ μ ν
- λ°λΌμ, λκΈ°νλ λ°λμ νμν(μ¬λ¬ μ€λ λμμ κ°λ³ λ°μ΄ν°λ₯Ό μ μ΄νλ) μν©μμλ§ μ¬μ©ν΄μΌ νλ©°, λκΈ°ν μμ μμμμ μμ λ μ΅μνμΌλ‘ μ€μ¬μΌ ν¨
public void addActivity(BiConsumer<List<String>, String> activity) {
synchronized(list) {
list.add(activity);
}
}
- μ¬μ©μκ° μ μ(ꡬν)ν ν¨μν μΈν°νμ΄μ€λ₯Ό μΈμλ‘ λ°μ 리μ€νΈμ μΆκ°νλ λ©μλ
- μ¬μ©μκ°
listμμ μκΈ° μμ μ μ κ±°νλ λμμ μννλ€λ©΄?
- λ°νμμ μμΈκ° λ°μν μ μμ
- μ¬μ©μκ°
listμ μ μ΄κΆμ νλνλ €λ λμμ μννλ€λ©΄?
- λ°νμμ Deadlock(κ΅μ°©μν)μ΄ λ°μν μ μμ
- μ¬μ©μκ° νΈμΆν λμμ΄ λλμ§ μλλ€λ©΄ - λκΈ°ν μμ λ΄μμ νλμ λμμ΄ μ€λ μνλλ©΄, κ·Έλμ λ€λ₯Έ μ€λ λλ 보νΈλ μμμ μ¬μ©νμ§ λͺ»νκ³ λκΈ°ν΄μΌ ν¨ (μ±λ₯ λ§€μ° μ ν)
- λκΈ°ν λΉμ© μμ²΄κ° ν° κ²μ μλ
- μ§μμ μΈ κ°μ μΌλ‘ 무μ κ°λ₯ν μμ€μ΄ λμμ
- μ±λ₯ μ ν μμΈμ μλ λ κ°μ§
- μ€λ λ κ° κ²½μ
- ν μ€λ λκ° μμμ μ μ νλ λμ λ€λ₯Έ μ€λ λλ λκΈ°ν΄μΌ ν¨
- κ°μλ¨Έμ μ μ½λ μ΅μ νλ₯Ό μ ν
- μ€λ λ κ° κ²½μ
- λκΈ°νλ₯Ό νμ§ μκ³ , ν΄λΌμ΄μΈνΈμκ² λκΈ°ν μ±
μμ μμ
- ex) java.util
- λκΈ°νλ₯Ό λ΄λΆμμ μννμ¬ μ 곡
- ex) java.util.concurrent
- λκΈ°νλ₯Ό 보μ₯νλ κΈ°λ₯/μλ£κ΅¬μ‘° λ±μ μ 곡νλ λΌμ΄λΈλ¬λ¦¬
- ex) java.util.concurrent
- 2λ²μ κ²½μ° μ¬μ©μκ° λ¨μΌ μ€λ λμμ μ¬μ©νλ κ²½μ°μλ λΆνμν λκΈ°νκ° μ΄λ£¨μ΄μ§κΈ° λλ¬Έμ, 1λ²μ κΆμ₯
- StringBufferμ μ±λ₯ λ¬Έμ λ‘ λ€λ¦κ² StringBuilderκ° λ±μ₯ν μ΄μ μ΄κΈ°λ ν¨
- μ¬λ¬ μ€λ λκ° νΈμΆνλ λ©μλ λ΄μμ μ μ νλ κ°μ μμ νλ€λ©΄, μ΄ νλλ₯Ό μ¬μ©νκΈ° μ μ λκΈ°νν΄μΌ ν¨
- μ΄ μ μ νλλ μ¬λ¬ μ€λ λκ° λμμ μ½κ±°λ μμ ν μ μλ€λ μ μμ μ¬μ€μ μ μ λ³μμ λμΌνκΈ° λλ¬Έμ λκΈ°νκ° μ΄λ£¨μ΄μ ΈμΌ ν¨