Item 84. Thread Scheduler
νλ‘κ·Έλ¨ λμμ μ€λ λ μ€μΌμ€λ¬μ κΈ°λμ§ λ§λΌ
μ΄μ체μ μ μ€λ λ μ€μΌμ€λ¬λ μμ μ 곡μ νκ² μννλ € νμ§λ§, ꡬ체μ μΈ μ μ± μ μ΄μ체μ λ§λ€ λ€λ₯Ό μ μλ€. μ΄μ체μ μ μ± μ λ°λΌ μ νμ±μ΄λ μ±λ₯μ΄ λ¬λΌμ§κ² λλ©΄, λ€λ₯Έ νλ«νΌμ μ΄μνκΈ° μ΄λ €μμ§κΈ° λλ¬Έμ μ΄λ¬ν μ μ± μ μμ‘΄ν΄μλ μλλ€. μ€λ λ μ€μΌμ€λ¬μ μμ‘΄νμ§ μκ² νκΈ° μν΄μ μλ μΈ κ°μ§ λ°©λ²μ μ¬μ©ν μ μλ€.
1. μ€ν κ°λ₯ν μ€λ λμ μλ₯Ό μ κ² μ μ§
κ°μ₯ μ’μ λ°©λ²μ μ€ν κ°λ₯ν μ€λ λμ μλ₯Ό νλ‘μΈμ μλ³΄λ€ μ§λμΉκ² λ§μμ§μ§ μλλ‘ νμ¬ μ€λ λ μ€μΌμ€λ¬κ° κ³ λ―Όν μΌμ μ€μ΄λ κ²μ΄λ€. μ€ν μ€λΉκ° λ μ€λ λλ€μ΄ 맑μ μμ μ μλ£ν λκΉμ§ κ³μ μ€ννκ² λ§λ€λ©΄, μ€λ λ μ€μΌμ€λ§ μ μ± μ΄ μμ΄νλλΌλ λμμ΄ ν¬κ² λ¬λΌμ§μ§ μκ² λλ€.
κ²°κ΅ μ€ν κ°λ₯ν μ€λ λ μλ₯Ό μ κ² μ μ§νλ κ²μ΄ μ€μνλ°, κ° μ€λ λκ° μμ
μ μλ£ νμ λ€μ μμ
μ κΉμ§ λκΈ°νλλ‘ νλ κ²μ΄ μ’λ€.
μ€νμ νλ μμν¬(Executor Framework
)λ‘ μλ₯Ό λ€λ©΄, μ€λ λ ν ν¬κΈ°λ₯Ό μ μ ν μ€μ νκ³ , μμ
μ μ§§κ² μ μ§νλ©΄ λλ€.
2. λ°μ λκΈ° μν ννΌ
λ°μ λκΈ°(busy waiting) μνλ 곡μ κ°μ²΄μ μνκ° λ°λ λκΉμ§ κΆνμ μ»κΈ° μν΄ κ³μ κ²μ¬νλ κ²μ λ§νλ€. μ€λ λκ° λ°μ λκΈ° μνμ λΉ μ§λ©΄, μ€λ λ μ€μΌμ€λ¬μ νλ‘μΈμμ λΆλ΄μ μ£Όκ² λμ΄ λ€λ₯Έ μμ μ΄ μνλ κΈ°νλ₯Ό μ€μ¬ μ±λ₯μ μ νμν¬ μ μλ€.
μ μ½λλ κΈ°μ‘΄ CountDownLatch
ν΄λμ€λ₯Ό λ°μ λκΈ° μνλ‘ κ΅¬νν κ²μΌλ‘, μ±
μ λ°λ₯΄λ©΄ 10λ°° μ΄μ λ리λ€κ³ νλ€.
3. μ€λ λ μ°μ μμλ₯Ό μ‘°μ νμ§ μκΈ°
Thread.yield
λ₯Ό μ¬μ©νλ©΄ μ€λ λ μ€μΌμ€λ¬μκ² νμ¬ μ€λ λμ μ€νμ λ©μΆκ³ λ€λ₯Έ μ€λ λμκ² μ€νμ μ보νλλ‘ μμ²ν μ μλ€.
νμ§λ§ λ§€λ² κ°μ κ²°κ³Όλ₯Ό 보μ₯νμ§ μμΌλ©°, OSμ λ°λΌ λμμ΄ λ¬λΌμ§ μ μκΈ° λλ¬Έμ μ¬μ©νμ§ μλ κ²μ΄ μ’λ€.
Last updated
Was this helpful?