[Java] 데몬 쓰레드

Bam·2024년 3월 18일
0

Java

목록 보기
76/98
post-thumbnail

데몬 쓰레드

데몬 쓰레드는 일반 쓰레드의 작업을 돕는 보조 쓰레드입니다. 그렇기 때문에 데몬 쓰레드는 일반 쓰레드가 종료돠면 알아서 종료가 됩니다. 이러한 특징을 제외하고는 일반 쓰레드와의 차이점은 없습니다. 사용법도 일반 쓰레드와 동일하게 start()를 통해 호출하는데요. 호출 하기 전에 setDaemon(true)를 통해서 쓰레드를 데몬 쓰레드로 바꿔주고 실행을 해야한다는 점입니다. (하지 않으면 일반 쓰레드로 실행됨)

일반적으로 데몬 쓰레드느 반복문과 조건문을 사용해서 처음 실행한 뒤 대기하다가 특정 조건에 부합하면 실행하는 형으로 코드를 작성합니다.

다음 코드는 데몬 쓰레드를 만들고 데몬 쓰레드의 동작을 보여주는 예제 코드입니다.

public class MyDaemon implements Runnable {
    public static boolean flag = false;

    @Override
    public void run() {
        while(true) {
            try {
                Thread.sleep(3000);
            }
            catch (InterruptedException e) {
                System.err.println(e);
            }

            if (flag) {	//flag가 true가되면 3초마다 메세지를 출력
                daemonMassage();
            }
        }
    }

    public static void daemonMassage() {
        System.out.println("데몬 쓰레드 작업");
    }
}
public class Main {
    public static void main(String[] args) {
        Thread thread = new Thread(new MyDaemon());

        thread.setDaemon(true);	//데몬 쓰레드로 설정
        thread.start();	//쓰레드 실행

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

            System.out.println(i);

            if (i == 3) {	//i가 3에 도달하면 flag를 true로 만들어서 데몬 쓰레드가 동작하도록 설정
                MyDaemon.flag = true;
            }
        }
    }
}

처음에는 데몬 쓰레드가 실행되지 않고 있다가 3에 도달하면 데몬 쓰레드가 작업을 시작합니다. 그 뒤에는 설정한대로 3초마다 데몬 쓰레드가 작업을 실행하는 것을 볼 수 있습니다.

0개의 댓글