☕️ Java/기본
[Java] Thread (5) - 데몬 쓰레드
말 랑
2022. 7. 13. 10:03
728x90
데몬 쓰레드
일반 쓰레드의 작업을 돕는 보조적인 역할을 수행하는 쓰레드를 의미합니다.
여기서 일반 쓰레드란 데몬 쓰레드가 아닌 다른 쓰레드를 의미합니다.
데몬 쓰레드는 단지 일반 쓰레드의 보조 역할만을 수행하므로 일반 쓰레드가 작업을 마치고 종료되었다면 데몬 쓰레드는 남은 작업이 있더라도 그 즉시 종료됩니다.
이외 특성은 일반 쓰레드와 모두 동일합니다.
데몬 쓰레드의 예시로는 GC등이 있습니다.
데몬 쓰레드의 작성
데몬 쓰레드는 기본적으로 무한루프와 조건문을 이용하여 실행 후 대기하다가, 특정 조건이 만족되는 순간에 작업을 수행하고 다시 대기하도록 작성합니다.
데몬 쓰레드의 생성과 실행방법은 일반 쓰레드와 모두 동일하지만, 데몬 쓰레드를 실행하기 전에 setDeamon( true )를 호출하여 데몬 쓰레드로 만들어 주어야 합니다.
데몬 쓰레드가 생성한 쓰레드 역시 데몬 쓰레드가 됩니다.
다음은 데몬 쓰레드의 사용예시입니다.
import java.util.concurrent.TimeUnit;
public class Example {
static boolean autoSave = false;
public static void main(String[] args) {
Thread thread = new Thread(new Thread(new DemonRunnableExample()));
thread.setDaemon(true);
thread.start();
for (int i = 0; i < 10; i++) {
try {
TimeUnit.SECONDS.sleep(1);
}catch (Exception e) { }
System.out.println("아무튼 뭐 대단한 작업 중...(%d)".formatted(i * 10));
autoSave = (i == 5);
}
}
static class DemonRunnableExample implements Runnable {
@Override
public void run() {
while (true) {
try {
TimeUnit.SECONDS.sleep(1);
} catch (Exception e) { }
if (autoSave)
System.out.println("자동 저장");
}
}
}
}
728x90