[JAVA] Thread


Contents


Threadλž€?

ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€ λ‚΄λΆ€μ—μ„œ λ…λ¦½μ μœΌλ‘œ μ‹€ν–‰λ˜λŠ” ν•˜λ‚˜μ˜ μž‘μ—… λ‹¨μœ„λ₯Ό λ§ν•œλ‹€.

μ„ΈλΆ€μ μœΌλ‘œλŠ” OS에 μ˜ν•΄ κ΄€λ¦¬λ˜λŠ” ν•˜λ‚˜μ˜ μž‘μ—… ν˜Ήμ€ νƒœμŠ€ν¬λ₯Ό μ˜λ―Έν•œλ‹€.

Thread classλ₯Ό μƒμ†λ°›κ±°λ‚˜ Runnable interfaceλ₯Ό κ΅¬ν˜„ν•΄μ„œ μŠ€λ ˆλ“œ 클래슀λ₯Ό μ •μ˜ν•  수 μžˆλ‹€.

Runnable interfaceλ₯Ό κ΅¬ν˜„ν•  κ²½μš°μ—” Threadλ₯Ό 상속받지 μ•Šμ•˜κΈ° λ•Œλ¬Έμ— thread 객체λ₯Ό 생성할 λ•Œ λ§€κ°œλ³€μˆ˜λ‘œ λ„£μ–΄μ£Όλ©΄ λœλ‹€.

μŠ€λ ˆλ“œμ™€ νƒœμŠ€ν¬, μž‘μ—…μ€ λ°”κΏ”μ„œ μ‚¬μš©ν•΄λ„ λ¬΄κ΄€ν•˜λ‹€.

CPUκ°€ μ‹±κΈ€ 코어일 λ•Œμ™€ λ“€μ–Ό 코어일 λ•Œ λ©€ν‹° μŠ€λ ˆλ“œκ°€ λ‹€λ₯΄κ²Œ μ‹€ν–‰λœλ‹€.

μ‹±κΈ€ 코어라면 μ—¬λŸ¬ μŠ€λ ˆλ“œκ°€ ν•˜λ‚˜μ”© λŒμ•„κ°€λ©΄μ„œ μ‹€ν–‰λ˜κ³  λ“€μ–Ό 코어라면 μ—¬λŸ¬ μŠ€λ ˆλ“œκ°€ 두 κ°œμ”© λŒμ•„κ°€λ©΄μ„œ μ‹€ν–‰λœλ‹€.

λΆ€λͺ¨ μŠ€λ ˆλ“œ, μžμ‹ μŠ€λ ˆλ“œ

μ‹€ν–‰ method

  • @Override run()
    • μ‹±κΈ€ μŠ€λ ˆλ“œλ‘œ μ‚¬μš©ν•  λ•Œ ν˜ΈμΆœν•˜λ©° threadκ°€ μƒμ„±λ˜μ§€ μ•Šκ³  run() λ©”μ„œλ“œλ§Œ μ‹€ν–‰λœλ‹€.
  • @Override start()
    • μƒˆλ‘œμš΄ μŠ€λ ˆλ“œλ₯Ό μƒμ„±ν•˜λ©° ν•΄λ‹Ή μŠ€λ ˆλ“œκ°€ μ‹€ν–‰λ˜λ©΄ run() λ©”μ„œλ“œκ°€ μ‹€ν–‰λœλ‹€.
    • λ©€ν‹° μŠ€λ ˆλ“œλ‘œ λ™μž‘ν•œλ‹€.

Demon thread

λΆ€λͺ¨ μŠ€λ ˆλ“œκ°€ μ£½μ—ˆμ„ λ•Œ μžμ‹ μŠ€λ ˆλ“œλ₯Ό μ–΄λ–»κ²Œ ν• μ§€ μ •ν•΄μ•Ό ν•œλ‹€.

isDemon()을 톡해 λΆ€λͺ¨ μŠ€λ ˆλ“œκ°€ μ‚΄μ•„μžˆλŠ”μ§€ 확인할 수 μžˆλ‹€.

setDemon() λ©”μ„œλ“œλ₯Ό 톡해 λΆ€λͺ¨κ°€ μ’…λ£Œλ˜λ©΄ μžμ‹λ„ μ’…λ£Œλ˜κ²Œ μ„€μ •ν•  수 μžˆλ‹€.

thread priority(μŠ€λ ˆλ“œ μš°μ„ μˆœμœ„)

.getPriority()λ₯Ό 톡해 ν•΄λ‹Ή μŠ€λ ˆλ“œμ˜ μš°μ„ μˆœμœ„λ₯Ό 확인할 수 μžˆλ‹€.

μš°μ„  μˆœμœ„μ˜ κΈ°λ³Έ 값은 5이며 1 ~ 10으둜 값이 μ‘΄μž¬ν•œλ‹€.

μš°μ„  μˆœμœ„κ°€ 클 수둝 μˆœμœ„κ°€ λ†’μœΌλ©° 10이 제일 λ¨Όμ € μ‹€ν–‰λœλ‹€.