Hamutaro - Hamtaro 4

Backend/Java

[JAVA] ν”„λ‘œμ„ΈμŠ€(Process)와 μŠ€λ ˆλ“œ(Thread)

carsumin 2022. 1. 11. 14:40

 

ν”„λ‘œμ„ΈμŠ€ (Process)

 

1. μ •μ˜

  • μš΄μ˜μ²΄μ œμ—μ„œ 싀행쀑인 ν”„λ‘œκ·Έλž¨μ˜ μΈμŠ€ν„΄μŠ€
  • ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€λŠ” λ…λ¦½λœ λ©”λͺ¨λ¦¬ 곡간을 κ°€μ§€κ³  있고, λ©”λͺ¨λ¦¬ μ˜μ—­μ„ κ³΅μœ ν•˜μ§€ μ•ŠμŒ
  • ν”„λ‘œμ„ΈμŠ€λŠ” μ„œλ‘œ λ…λ¦½μ μž„ -> ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€μ— λ¬Έμ œκ°€ 생겨도 λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€μ— 영ν–₯ μ—†μŒ

2. λ©”λͺ¨λ¦¬μ™€ μžμ›κ΄€λ¦¬

  • 각 ν”„λ‘œμ„ΈμŠ€λŠ” λ…λ¦½λœ μ£Όμ†Œ 곡간(λ©”λͺ¨λ¦¬)을 κ°€μ§€κ³  있기 λ•Œλ¬Έμ— μ„œλ‘œ κ³΅μœ ν•˜μ§€ μ•ŠμŒ
  • μš΄μ˜μ²΄μ œμ— μ˜ν•΄ λ³΄ν˜Έλ˜μ–΄ 있음
  • ν”„λ‘œμ„ΈμŠ€κ°„μ˜ 톡신은 μƒλŒ€μ μœΌλ‘œ λ³΅μž‘ν•œ λ°©λ²•μœΌλ‘œ 이루어짐 (ex.νŒŒμ΄ν”„, μ†ŒμΌ“ λ“±)

3. μ‹€ν–‰ 및 μ„±λŠ₯

  • ν”„λ‘œμ„ΈμŠ€κ°„μ˜ Context Switching은 μ˜€λ²„ν—€λ“œκ°€ 크며, λ©”λͺ¨λ¦¬μ™€ CPU μžμ› μ†Œλͺ¨λ„ 많음
  • ν”„λ‘œμ„ΈμŠ€λŠ” μš΄μ˜μ²΄μ œμ—μ„œ ν• λ‹Ήλœ μžμ›μ„ λ…λ¦½μ μœΌλ‘œ μ‚¬μš©ν•¨
  • 닀쀑 ν”„λ‘œμ„ΈμŠ€λ₯Ό μ‚¬μš©ν•œ 병렬 μ²˜λ¦¬λŠ” λ©”λͺ¨λ¦¬ μ‚¬μš©λŸ‰μ΄ ν¬μ§€λ§Œ μ•ˆμ •μ μž„

 

ν”„λ‘œμ„ΈμŠ€λŠ” μ‹œμŠ€ν…œ μžμ›μ„ λ…λ¦½μ μœΌλ‘œ μ‚¬μš©ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ˜ λ‹¨μœ„λ‘œ, μ•ˆμ •μ„±μ΄ 높은 λŒ€μ‹  무겁고 톡신이 어렀움

 

 

μŠ€λ ˆλ“œ (Thread)

 

1. μ •μ˜

  • ν”„λ‘œμ„ΈμŠ€ λ‚΄μ—μ„œ μ‹€ν–‰λ˜λŠ” μž‘μ—…μ˜ μ΅œμ†Œ λ‹¨μœ„
  • ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€λŠ” μ—¬λŸ¬ μŠ€λ ˆλ“œλ₯Ό κ°€μ§ˆ 수 있고, λ™μΌν•œ λ©”λͺ¨λ¦¬ 곡간을 κ³΅μœ ν•¨
  • μŠ€λ ˆλ“œλŠ” 독립적이지 μ•ŠκΈ° λ•Œλ¬Έμ— ν•˜λ‚˜μ˜ μŠ€λ ˆλ“œμ— λ¬Έμ œκ°€ λ°œμƒν•˜λ©΄ 같은 ν”„λ‘œμ„ΈμŠ€ λ‚΄μ˜ λ‹€λ₯Έ μŠ€λ ˆλ“œμ—λ„ 영ν–₯을 λ―ΈμΉ¨

2. λ©”λͺ¨λ¦¬μ™€ μžμ› 관리

  • λ™μΌν•œ ν”„λ‘œμ„ΈμŠ€ λ‚΄μ˜ λͺ¨λ“  μŠ€λ ˆλ“œλŠ” 같은 μ£Όμ†Œ 곡간을 곡유
  • 같은 ν”„λ‘œμ„ΈμŠ€ λ‚΄μ˜ μŠ€λ ˆλ“œλ“€μ€ μ‰½κ²Œ 데이터λ₯Ό κ³΅μœ ν•  수 μžˆμ§€λ§Œ, λ™μ‹œμ— 경쟁 μ‘°κ±΄μ΄λ‚˜ 동기화 λ¬Έμ œκ°€ λ°œμƒν•  수 있음
  • ν”„λ‘œμ„ΈμŠ€λ³΄λ‹€ κ°€λ²Όμš΄ λ‹¨μœ„λ‘œ, 생성 및 μ’…λ£Œκ°€ 더 λΉ λ₯΄κ³  λ©”λͺ¨λ¦¬ μ‚¬μš©μ΄ 적음

3. μ‹€ν–‰ 및 μ„±λŠ₯

  • Javaμ—μ„œ Thread 클래슀λ₯Ό μƒμ†λ°›κ±°λ‚˜ Runnable μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•˜μ—¬ μŠ€λ ˆλ“œλ₯Ό 생성
  • 닀쀑 μž‘μ—…μ„ λ™μ‹œμ— μˆ˜ν–‰ν•˜κ³ μž ν•  λ•Œ μŠ€λ ˆλ“œ μ‚¬μš© (ex. 파일 λ‹€μš΄λ‘œλ“œ, 쿼리 λ™μ‹œ 처리 λ“±)

 

μŠ€λ ˆλ“œλŠ” 동일 ν”„λ‘œμ„ΈμŠ€ λ‚΄μ˜ μ΅œμ†Œ μž‘μ—… λ‹¨μœ„λ‘œμ„œ, μžμ›μ„ κ³΅μœ ν•˜μ—¬ νš¨μœ¨μ μ΄μ§€λ§Œ 동기화 λ¬Έμ œκ°€ λ°œμƒν•˜κΈ° λ•Œλ¬Έμ— 이λ₯Ό κ³ λ €ν•΄μ„œ μ²˜λ¦¬ν•΄μ•Όν•¨