Java
Demon Thread
RubyRabbit
2022. 9. 4. 17:17
Demon Thread
- 프로세스의 모든 일반 쓰레드가 종료될 때 남은 작업에 상관없이 같이 종료되는 쓰레드
- 가비지 컬렉터, 자동 저장 등 프로그램 종료 시점에 맞춰 같이 종료되어야 하는 작업에 사용됨
public static void main(String[] args) {
Thread commonThread = new Thread(() -> {
String threadName = Thread.currentThread().getName();
IntStream.range(0, 3).forEach(idx -> execute(threadName));
System.out.println(threadName + " 종료");
});
commonThread.setName("commonThread");
Thread demonThread = new Thread(() -> {
String threadName = Thread.currentThread().getName();
IntStream.range(0, 5).forEach(idx -> execute(threadName));
System.out.println(threadName + " 종료");
});
demonThread.setDaemon(true);
demonThread.setName("demonThread");
try {
commonThread.start(); // 일반 쓰레드 실행
Thread.sleep(2000); // 1초 뒤 데몬 쓰레드 실행
demonThread.start();
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
System.out.println("mainThread 종료");
}
public static void execute(String threadName) {
System.out.println(threadName + " 실행");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}