본문 바로가기

Java/Java

(JAVA) 데몬쓰레드

 

데몬 쓰레드란?

일반적인 쓰레드의 작업을 돕는 보조적인 역할을 수행하는 쓰레드

  • 일반적인 쓰레드의 작업이 종료되면 데몬 쓰레드도 함께 작업이 종료된다.
  • ex) GC, 워드프로세서의 자동저장, 화면 자동갱신

사용법

 

데몬 쓰레드의 활용

0 부터 10 까지의 수를 출력하는 프로그램이다.

이때 출력하는 시간은 1초로 지정을하고 5초가 될때 autoSave값을 true로 변환하고 

1초마다 값을 해당 값을 체크하여 autoSave 값이 true 인지 체크하는 프로그램

public class DeamonThreadEx implements Runnable{
    static boolean autoSave = false;

    public static void main(String[] args) {
        Thread th = new Thread(new DeamonThreadEx());
        th.setDaemon(true);
        th.start();

        for (int i=0;i<10;i++) {
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
            }

            System.out.println(i);
            if(i==5) {
                autoSave = true;
            }
        }
        System.out.println("프로그램을 종료합니다...");
    }
    @Override
    public void run() {
        while (true) {
            try {
                Thread.sleep(1*1000);
            } catch (InterruptedException e) {
            }
            if (autoSave) {
                autoSave();
            }
        }
    }

    public void autoSave() {
        System.out.println("작업이 자동 저장 되었습니다.");
    }
}

 

만약 데몬 쓰레드로 지정하지 않았다면?

프로그램이 종료되어도 해당 작업은 끝나지 않는다.