νλ‘μΈμ€μ μ°λ λ
- νλ‘μΈμ€: μ€νμ€μΈ νλ‘κ·Έλ , OSλ‘λΆν° λ©λͺ¨λ¦¬λ₯Ό ν λΉλ°μ. μ°λ λκ° μΌνλ μμ νκ²½
- μ°λ λ: νλ‘μΈμ€ μμμ μ΄μ©ν΄μ μ€μ λ‘ μμ μ μννλ κ².
- λ©ν°μ°λ λ: λ μ΄μμ μ°λ λλ₯Ό κ°μ§ νλ‘μΈμ€
- λ©ν°μ°λ λ©
- μ₯μ
- β CPU μ¬μ©λ₯ ν₯μ
- β‘ μμ ν¨μ¨μ μ¬μ©
- β’ μ¬μ©μμ λν μλ΅μ± ν₯μ
- β£ μ§μ λΆλ¦¬ = μ½λ κ°κ²°
- *κ³ λ €μ¬ν: μμμ 곡μ νμ¬ μμ νλ©° μκΈ°λ λκΈ°ν, κ΅μ°©μν λ±μ κ³ λ €ν κ²
μ°λ λμ ꡬν
- Thread ν΄λμ€λ₯Ό μμνκ±°λ, Runnable μΈν°νμ΄μ€λ₯Ό ꡬνν΄μ run( )λ©μλμ λͺΈν΅{ }μ μ±μ°λ κ².
- μ§κΈκΉμ§ ν ν΄λμ€μ mainλ©μλμ μ°λ λ΄μ©μ run( )λ©μλμ ꡬνλΆμμμ±νλ©΄ λλ κ²μ.
- Runnable μΈν°νμ΄μ€: μ€μ§ run()λ§ μ μλμ΄μλ κ°λ¨ν μΈν°νμ΄μ€.
mainμ°λ λμμ start( )λ₯Ό νΈμΆνμ λ
- β start( )κ° νΈμΆ μ€νμ μλ‘ μμ±ν¨.
- β‘μ νΈμΆ μ€νμ run( )μ νΈμΆν¨. μ΄μ νΈμΆ μ€ν 2κ°κ° λ²κ°μ κ°λ©° μμ μ μνν¨.(OSμ€μΌμ₯΄λ¬μ λ§μμ λ°λΌ)
- λͺ¨λ μ°λ λλ λ 립μ μΈ μμ μνμ μν΄μ μμ λ§μ νΈμΆμ€νμ νμλ‘ ν¨. μλ‘μ΄ μ°λ λλ₯Ό μμ±νκ³ μ€νμν¬ λλ§λ€ [μλ‘μ΄ νΈμΆ μ€νμ μμ± → μ°λ λ μ’ λ£λλ©΄ νΈμΆμ€ν μλ©Έ] λ°λ³΅ν¨.
- mainλ©μλμ μμ μ μννλ κ²: mainμ°λ λ
- μ€ν μ€μΈ μ¬μ©μ μ°λ λκ° νλλ μμ λ νλ‘κ·Έλ¨μ μ’ λ£λ¨.
- ν μ°λ λκ° μμΈκ° λ°μλμ΄ μ’ λ£λμ΄λ, λ€λ₯Έ μ°λ λμ μ€νμλ μν₯μ λ―ΈμΉμ§ μμ.
μ±κΈμ°λ λμ λ©ν°μ°λ λ
- 컨ν μ€νΈ μ€μμΉ: νλ‘μΈμ€ λλ μ°λ λ κ°μ μμ μ ν. μ 보μ μ μ₯/μ½κΈ°μ μκ° μμλ¨.
- λ μ°λ λκ° μλ‘ λ€λ₯Έ μμ μ¬μ© μ λ©ν° μ°λ λ νλ‘μΈμ€κ° λ ν¨μ¨μ μ. λ§μ½ λ μ°λ λκ° μλ‘ λ€λ₯Έ μμ μ μ¬μ©ν λ I/OλΈλ½νΉμ΄ μΌμ΄λ μ μμ.
- I/Oμμ μ΄ μλ°λ λ λ©ν°μ°λ λ νλ‘μΈμ€λΌλ©΄ μ λ ₯μ κΈ°λ€λ¦¬λ λΆλΆμμ μ°λ λλ κΈ°λ€λ¦¬μ§ μκ³ λ€λ₯Έ μ°λ λ μμ μ μνν¨(Non-λΈλ½νΉ)
μ°λ λμ μ°μ μμ (νμ, μκ°)
- μ°λ λμ μμ: public static final int NORM, MIN, MAX_PRIORITY
- μ°λ λμ λ©μλ: void setPriority(int newPriority) μ°λ λμ μ°μ μμλ₯Ό μ§μ ν κ°μΌλ‘ λ³κ²½ν¨.
- int getPriority( ): μ°λ λμ μ°μ μμ λ°ν.
- μ°μ μμ μ°¨λ± μ¬μ€ λ³ ν¨κ³Ό μμ
- μ°λ λμ μ°μ μμ: μμ μ μ°μ μμλ₯Ό λμ΄ PriorityQueueμ μ μ₯νκ³ μ°μ μμ λμ μμ μ λ¨Όμ μ²λ¦¬λλλ‘ νκΈ°.
μ°λ λ κ·Έλ£Ή
- μλ‘ κ΄λ ¨λ μ°λ λλ₯Ό κ·Έλ£ΉμΌλ‘ λ€λ£¨κΈ° μν κ².
- μ°λ λ κ·Έλ£Ή μμ±=μ°λ λλ₯Ό λ¬Άμ΄μ κ΄λ¦¬ν μ μλ κ².
- 보μμμ μ΄μ λ‘ λμ λ¨.
- μμ μ΄ μν μ°λ λ κ·Έλ£Ήκ³Ό νμ μ°λ λ κ·Έλ£Ήμ λ³κ²½ κ°λ₯ν¨O
- λ€λ₯Έ μ°λ λ κ·Έλ£Ήμ μ°λ λ λ³κ²½μ X
- μ°λ λ κ·Έλ£Ή μμ±μ
- ThreadGroup(μ΄λ¦),
- ThreadGroup(μ§μ λ κ·Έλ£Ή μ΄λ¦, μλ‘ λ§λ€ μ΄λ¦)
- μ°λ λ κ·Έλ£Ή λ©μλ
- activeCount( ), checkAccess( ), destory( ), enumerate( ), getMaxPriority( ), getName( ), getParent( ), interrupt( ), isDaemon( ), isDestroyed( ), list( ), parentOf( ), setDaemon( ), setMaxPriority( )
- μ°λ λλ₯Ό μ°λ λ κ·Έλ£Ήμ ν¬ν¨μν€λ €λ©΄ Threadμμ±μλ₯Ό μ΄μ©ν΄μΌν¨. μλ°μμ μ p.741νλ¨ 4κ°μ§λ°©λ² μμ.
- λͺ¨λ μ°λ λ κ·Έλ£Ήμ mainμ°λ λ κ·Έλ£Ήμ νμ μ°λ λκ·Έλ£Ή.
- μ°λ λ κ·Έλ£Ήμ μ§μ νμ§ μκ³ μμ±ν μ°λ λλ μλμ μΌλ‘ mainμ°λ λ κ·Έλ£Ήμ.
- Threadμ μ°λ λ κ·Έλ£Ή κ΄λ ¨ λ©μλ
- ThreadGroup getThreadGroup( ): μ°λ λ μμ μ΄ μν μ°λ λ κ·Έλ£Ήμ λ°νν¨.
- void uncaughException(Thread t, Throwable e): μ°λ λ κ·Έλ£Ήμ μ°λ λκ° μ²λ¦¬λμ§ μμ μμΈμ μν΄ μ€νμ’ λ£λμ λ, JVMμ μν΄ μ΄ λ©μλκ° μλμ μΌλ‘ νΈμΆλ¨.
λ°λͺ¬ μ°λ λ
- λ€λ₯Έ μΌλ°μ°λ λμ μμ μ λλ 보쑰μ μΈ μν μ μννλ μ°λ λ.
- μΌλ°μ°λ λκ° λͺ¨λ μ’ λ£ μ κ°μ μ μΌλ‘ μλ μ’ λ£λ¨.
- μμ: κ°λΉμ§μ»¬λ ν°, μλμ μ₯, νλ©΄κ°±μ
- β 무ν루ν&쑰건문μΌλ‘ μ€ν ν λκΈ°
- β‘νΉμ μ‘°κ±΄μ΄ λ§μ‘±λλ©΄ μμ μν → λ€μ λκΈ°
λ°λͺ¬ μ°λ λ μμ± & μ€νλ°©λ²
- β μ°λ λ μμ±
- β‘setDaemon(true)νΈμΆ
- β’μ°λ λ μ€ν
- λ°λͺ¬ μ°λ λκ° μμ±ν μ°λ λ = μλμ μΌλ‘ λ°λͺ¬μ°λ λ
- boolean isDeamon( ): λ°λͺ¬μ°λ λμΈμ§ νμΈν¨. λ°λͺ¬μ°λ λκ° λ§μΌλ©΄ true
- void setDeamon(boolean on) : λ°λͺ¬μ°λ λ ↔ μ¬μ©μ μ°λ λ κ°μ λ³κ²½ (맀κ°λ³μλ₯Ό trueλ‘νλ©΄ λ°λͺ¬μ°λ λ λ¨)
- getAllStackTraces( ): μ€νμ€, λκΈ°μν, μμ μ΄ μλ£λμ§ μμ λͺ¨λ μ°λ λμ νΈμΆμ€νμ μΆλ ₯νλ λ©μλ
'π₯οΈ λ°±μλ > Java' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[CH.13] μ°λ λμ λκΈ°ν(Lock) (0) | 2023.11.15 |
---|---|
[ch.13] μ°λ λ μ€ν μ μ΄ λ©μλ (0) | 2023.11.15 |
[ch.12] μ΄κ±°ν, μ λν μ΄μ (0) | 2023.11.14 |
[ch.11] μ§λ€λ¦μ€ (0) | 2023.11.14 |
[ch.11] 컬λ μ νλ μμν¬ (0) | 2023.11.14 |