프로그래밍/Java 공부

Daemon Thread(데몬 스레드)

개발계발게발 2021. 11. 4. 11:08
반응형

데몬(Deamon) 스레드란 주 스레드의 작업을 돕는 보조적인 역할을하는 스레드

 

주 스레드가 종료되면 데몬스레드는 강제적으로 자동 종료

(주 스레드의 보조 역할, 주 스레드가 종료되면 의미없음)

-워드 프레세서의 자동 저장, 미디어 플레이어의 동영상 및 음악 재생, 가비지 컬렉터 등에 사용

class AutoSaveThread extends Thread {
    public void save() {
        System.out.println("작업 내용 저장");
    }

    @Override
    public void run() {
        while (true) {
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                break;
            }
            save();
        }
    }
}

public class DemonThread {
    public static void main(String[] args) throws InterruptedException {
        AutoSaveThread autoSaveThread = new AutoSaveThread();
        autoSaveThread.setDaemon(true); //AutoSaveThread를 데몬스레드로
        autoSaveThread.start();
        
        Thread.sleep(3000);
        System.out.println("메인 스레드 종료");
    }
}

실행결과

메인 스레드 종료되면서 데몬 스레드 종료

 

데몬스레드 생성하기 위해서는 setDaemon(true)를 호출

start()전에 호출해야 한다

start()후에 호출하면 IllegalThreadStateException 발생

반응형