데몬(daemon) 스레드는, 주 스레드의 작업을 돕는 보저 역할을 수행하는 스레드입니다. 사실 이 데몬 스레드 자체의 속성은 일반 스레드와 아주 크게 다르지는 않은데, 주 스레드가 종료되면 강제로 종료된다는 특성을 갖습니다. 말했듯이 주 스레드의 보조 역할을 하는 것이 근본적인 존재 이유이기 때문에, 주 스레드가 종료되면 남아있을 이유가 없는 것이죠.
데몬 스레드가 동작하는 실제 예시를 보면, 워드프로세서의 자도 ㅇ저장 / 미디어 플레이어의 동영상(음악) 재생 / 가비지 컬렉터 등이 있습니다. 이들은 주 스레드(워드, 미디어 플레이어, JVM)가 종료되면 같이 종료됩니다.
스레드를 데몬으로 만들기 위해서는, 주 스레드가 데몬이 될 스레드의 setDaemon(true)를 호출해야 합니다. 아래 예제를 보겠습니다.
public static void main(String[] args) {
AutoSaveThread thread = new AutoSaveThread();
thread.setMaemon(true);
thread.start();
// ...
}
위 예제의 AutoSaveThread가 데몬 스레드가 되었습니다. 주의할 점은, 해당 스레드의 start( ) 메서드 호출 전에 setDaemon(true)를 실행해야 한다는 점입니다. start( ) 출력 이후 setDaemon(true)를 호출하면, IllegalThreadStateException이 발생합니다.
참고로 특정 스레드의 daemon 여부는 isDaemon( ) 메서드를 통해 확인이 가능합니다. 데몬일 경우 true를 리턴합니다.
좀 더 자세한 예제를 살펴보겠습니다. 아래의 예제는 1초 주기로 save( ) 메서드가 자동 호출되도록 AutoSaveThread를 작성하고, 메인 스레드가 3초 후 종료되면 AutoSaveThread도 같이 종료될 수 있도록 AutoSaveThread를 데몬 스레드로 만들었습니다.
'Programming > JAVA' 카테고리의 다른 글
멀티 스레드(8) - 스레드 그룹 1 (0) | 2024.12.18 |
---|---|
멀티 스레드(7) - 데몬 스레드 2 (0) | 2024.12.17 |
멀티 스레드(6) - 스레드 상태 제어 6 : 스레드의 안전한 종료 2 (0) | 2024.12.11 |
멀티 스레드(6) - 스레드 상태 제어 6 : 스레드의 안전한 종료 1 (1) | 2024.12.10 |
멀티 스레드(6) - 스레드 상태 제어 5 : 스레드 간 협업 3 (0) | 2024.12.09 |