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);
    }
}

'Java' 카테고리의 다른 글

애너테이션  (0) 2022.09.06
Thread의 동기화 처리  (0) 2022.09.04
Thread 의 동시성과 병렬성  (0) 2022.09.01
JVM - Java Virtual Machine  (0) 2022.08.30
자바 소스 코드의 실행 과정  (0) 2022.08.30

+ Recent posts