Coding Planet
๋ฐ๋ชฌ์ฐ๋ ๋(daemon thread) - ์ฌ์ฉํ๋ ์ด์ ์ java ์ฝ๋ ์ ๋ณธ๋ฌธ
๋ฐ๋ชฌ์ฐ๋ ๋(daemon thread) - ์ฌ์ฉํ๋ ์ด์ ์ java ์ฝ๋ ์
jhj.sharon 2024. 2. 26. 13:54
"Daemon" ์ด๋ผ๋ ๋จ์ด๋ ์๋ ๊ทธ๋ฆฌ์ค ์ ํ์ ๋ณดํธ์ ๋๋ ์ ์ ์ง๋ฐฐ๋ฅผ ๋ฐ๋ ์ํผ์ ์๋ฏธํ๋ ๋จ์ด์์ ์ ๋๋ฌ์ผ๋, ์ปดํจํ ๋ถ์ผ์์ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํ๋๋ ํ๋ก์ธ์ค๋ ์๋น์ค๋ฅผ ์๋ฏธํ๋ค. ๋ณดํต ์ฌ์ฉ์์ ์ง์ ์ ์ธ ๊ฐ์ ์์ด ๋ ๋ฆฝ์ ์ผ๋ก ์คํ๋๋ฉฐ ์์คํ ๊ด๋ฆฌ, ์์ ๊ด๋ฆฌ, ํ์ผ ์ ์ก, ๋คํธ์ํฌ ์๋น์ค ์ ๊ณต ๋ฑ์ ์์ ์ ์ํํ๋ ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฆฌํจ๋ค. ์ด์์ฒด์ ๋ ์๋ฒ์์๋ ๋ค์ํ ๋ฐ๋ชฌ์ด ์์คํ ์ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋ฅ์ ์ง์ํ๊ธฐ ์ํด ์คํ๋๊ณ ์๋๋ฐ ์ด ํฌ์คํธ์์๋ ๋ฐ๋ชฌ์ฐ๋ ๋(daemeon thread)๋ฅผ ์ค์ ์ ์ผ๋ก ์ดํด ๋ณด๊ณ ์ ํ๋ค.
| ๋ฐ๋ชฌ ์ฐ๋ ๋(daemon thread)
๋ฐ๋ชฌ ์ฐ๋ ๋๋ ์ผ๋ฐ์ฐ๋ ๋(๋ฐ๋ชฌ ์ฐ๋ ๋๊ฐ ์๋ ์ฐ๋ ๋)์ ์์ ์ ๋๋ ๋ณด์กฐ์ ์ธ ์ญํ ์ ์ํํ๋ ์ฐ๋ ๋์ด๋ค. ์ฃผ ์ฐ๋ ๋(์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฉ์ธ์ฐ๋ ๋)๊ฐ ์ข ๋ฃ๋ ๋ ์๋์ผ๋ก ์ข ๋ฃ๋๋ ํน์ฑ์ ๊ฐ์ง๊ณ ์๋ค. ๋ฐ๋ชฌ ์ฐ๋ ๋๋ ๋ฉ์ธ ์ฐ๋ ๋์ ๋ณด์กฐ์ ์ญํ ์ ์ํํ๋ฏ๋ก ๋ฉ์ธ ์ฐ๋ ๋๊ฐ ์ข ๋ฃ๋๋ฉด ์์ฐ์ค๋ฝ๊ฒ ํ์ ์๊ฒ ๋๋ค.
์ด๋ฌํ ํน์ฑ ๋๋ฌธ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋ช ์ฃผ๊ธฐ์ ๊ด๋ จ๋ ์์ ์ ์ ํฉํ๋ค. ์๋์ ์ฅ, ๊ฐ๋น์ง ์ปฌ๋ ์ , ํ์ผ ๋ชจ๋ํฐ๋ง, ์ธ์ ๋ชจ๋ํฐ๋ง๋ฑ์ ์์ ์ ์๋ก ๋ค ์ ์๋ค.
์ด๋ฅผ ์ ์ธํ๋ฉด ์ผ๋ฐ ์ฐ๋ ๋์ ํฌ๊ฒ ๋ค๋ฅธ์ ์ ์๋ค.
| ๋ฐ๋ชฌ ์ฐ๋ ๋๋ฅผ ์ฐ๋ ์ด์
๋ฐ๋ชฌ ์ฐ๋ ๋๋ฅผ ์ฐ๋ ์ด์ ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฃผ ์์ ๊ณผ๋ ๋ณ๋๋ก ์คํ๋์ด์ผ ํ๋, ๋น๊ต์ ์ค์๋๊ฐ ๋ฎ์ ์์ ๋ค์ ๊ด๋ฆฌํ๊ธฐ ์ํด์๋ค. ์ด๋ฌํ ์์ ๋ค์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ข ๋ฃ๋ ๋ ์๋์ผ๋ก ์ ๋ฆฌ๋์ด์ผ ํ๋ฉฐ, ์ฌ์ฉ์๊ฐ ๋ช ์์ ์ผ๋ก ๊ด๋ฆฌํ ํ์ ์์ด ๋ฐฑ๊ทธ๋ผ์ ใด๋์์ ๊ณ์ ์คํ๋์ด์ผ ํ๋ค. ๋ฐ๋ชฌ ์ฐ๋ ๋๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ฌํ ์ ํ์ ์์ ์ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ค.
๋ฐ๋ชฌ ์ฐ๋ ๋๋ฅผ ์ฌ์ฉํฉ์ง ์๊ณ ์ผ๋ฐ ์ฐ๋ ๋๋ก ๊ฐ์ ์์ ์ ์คํํ ๊ฒฝ์ฐ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ข ๋ฃ๋ ๋ ๋ชจ๋ ์ฐ๋ ๋๊ฐ ์ข ๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ ค์ผ ํ๋ฏ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ์ข ๋ฃ์๊ฐ์ด ์ง์ฐ๋ ์ ์๋ค. ๋ํ, ๊ฐ๋ฐ์๊ฐ ์ง์ ์ฐ๋ ๋๋ฅผ ๊ด๋ฆฌํ๊ณ ์ข ๋ฃ์์ผ์ผํ๋ ๋ถ๋ด์ด ์๊ธด๋ค. ๋ฐ๋ผ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ์ ์ํํ๋ฉด์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ข ๋ฃ ๊ณผ์ ์ ๋ฐฉํดํ์ง ์์์ผ ํ๋ ์์ ์๋ ๋ฐ๋ชฌ ์ฐ๋ ๋๊ฐ ์ ํฉํ๋ค.
| ๋ฐ๋ชฌ ์ฐ๋ ๋ ์์ฑ๋ฒ - java ์ฝ๋ ์์
๋ฐ๋ชฌ ์ฐ๋ ๋๋ ๋ฌดํ ๋ฃจํ์ ์กฐ๊ฑด๋ฌธ์ ์ด์ฉํด์ ์คํ ํ ๋๊ธฐํ๊ณ ์๋ค๊ฐ ํน์ ์กฐ๊ฑด์ด ๋ง์กฑ๋๋ฉด ์์ ์ ์ํํ๊ณ ๋ค์ ๋๊ธฐํ๋๋ก ์์ฑํ๋ค. ๋ฐ๋ชฌ ์ฐ๋ ๋๋ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ง์์ ์ผ๋ก ์คํ๋์ด์ผ ํ๋ ์์ ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์์ฑ๋๋ฏ๋ก ๋ฌดํ ๋ฃจํ๋ฅผ ํตํด ๋ฐ๋ชฌ ์ฐ๋ ๋๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ค์ป๋๋ ๋์ ๊ณ์ํด์ ์คํ ์ํ๋ฅผ ์ ์งํ๋๋ก ํ๋ค.
public class DaemonThreadExample {
public static void main(String[] args) {
Thread daemonThread = new Thread(() -> {
while (true) {
try {
System.out.println("๋ฐ๋ชฌ ์ฐ๋ ๋๊ฐ ์คํ ์ค...");
Thread.sleep(1000); // 1์ด ๋์ ๋๊ธฐ
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
daemonThread.setDaemon(true); // ์ด ์ฐ๋ ๋๋ฅผ ๋ฐ๋ชฌ ์ฐ๋ ๋๋ก ์ค์
daemonThread.start(); // ๋ฐ๋ชฌ ์ฐ๋ ๋ ์์
try {
System.out.println("์ฃผ ์ฐ๋ ๋๊ฐ 3์ด ๋์ ์คํ๋ฉ๋๋ค...");
Thread.sleep(3000); // ์ฃผ ์ฐ๋ ๋๋ฅผ 3์ด ๋์ ์คํ
System.out.println("์ฃผ ์ฐ๋ ๋ ์ข
๋ฃ.");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
- daemonThread.setDaemon(true) : ์ฐ๋ ๋๋ฅผ ๋ฐ๋ชฌ ์ฐ๋ ๋๋ก ๋ณ๊ฒฝํ๋ค. false๋ ์ฌ์ฉ์ ์ฐ๋ ๋๋ก ๋ณ๊ฒฝํ๋ค.
- while(true) : ๋ฌดํ๋ฃจํ๋ฅผ ์์ฑํ์ฌ ์ฐ๋ ๋๊ฐ ๋ช ์์ ์ผ๋ก ์ข ๋ฃ๋๊ฑฐ๋ ์ฃผ ์ฐ๋ ๋๊ฐ ์ข ๋ฃ๋ ๋๊น์ง ๊ณ์ ์คํ๋๋๋กํจ
- Thread.sleep(1000); : ์ฐ๋ ๋๊ฐ ์ผ์ ์๊ฐ ๋์ ๋๊ธฐํ๋๋ก ํ์ฌ, ๋ฐ๋ชฌ ์ฐ๋ ๋๊ฐ ์์คํ ์์์ ๊ณผ๋ํ๊ฒ ์ฌ์ฉํ์ง ์๋๋ก ํจ
'๐ป Java Study > Java ์ด๋ก ์ ๋ฆฌ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
HashMap / HashTable / ConCurrentHashMap ํ๋ฒ์ ์ ๋ฆฌํ๊ธฐ (1) | 2024.02.29 |
---|---|
ThreadLocal๊ณผ ThreadLocalUtil (0) | 2024.02.28 |
๋ฉํฐํ์คํน๊ณผ ๋ฉํฐ์ฐ๋ ๋ฉ์ ์ฐจ์ด - ํ๋ก์ธ์ค์ ์ฐ๋ ๋ (0) | 2024.02.01 |
[์๋ฐ์ ์ ์ ]๋๋ค์(Lambda Expressions) 1 - ๋๋ค์ ๊ตฌ์กฐ์ ์์ฑ๋ฒ (0) | 2023.08.26 |
[Java] length vs length()์ ์ฐจ์ด (0) | 2023.08.26 |