본문 바로가기
Java

[Java] 데몬스레드

by 태크민 2024. 4. 30.

데몬 스레드(Daemon Thread)란?

리눅스, 유닉스 계열의 운영체제에서 백그라운드로 동작하는 프로그램을 데몬(Daemon)이라고 한다. 자바에서 이런 데몬과 유사하게 동작하는 쓰레드를 데몬 스레드(Daemon Thread)라고 한다.

즉, 데몬 쓰레드란 주 스레드의 작업을 돕는 보조적인 역할을 수행하는 스레드이다.

 

데몬 스레드는 자바 프로그램을 만들 때 백그라운드에서 특별한 작업을 처리하게 하는 용도로 만든다. 주 스레드(main 등)가 모두 종료되면 강제적으로 종료되는 특징이 있다.

데몬 스레드 만들기

데몬 스레드를 만드는 방법은 스레드에 데몬 설정을 하는 것이다.

thread.setDeamon(true);

    // Runnable을 구현하는 DaemonThread클래스를 작성
    public class DaemonThread implements Runnable {

        // 무한루프안에서 0.5초씩 쉬면서 데몬스레드가 실행중입니다를 출력하도록 run()메소드를 작성
        @Override
        public void run() {
            while (true) {
                System.out.println("데몬 스레드가 실행중입니다.");

                try {
                    Thread.sleep(500);

                } catch (InterruptedException e) {
                    e.printStackTrace();
                    break; //Exception발생시 while 문 빠찌도록 
                }
            }
        }

        public static void main(String[] args) {
            // Runnable을 구현하는 DaemonThread를 실행하기 위하여 Thread 생성
            Thread th = new Thread(new DaemonThread());
            // 데몬스레드로 설정
            th.setDaemon(true);
            // 쓰레드를 실행
            th.start();

            // 메인 스레드가 1초뒤에 종료되도록 설정. 
            // 데몬스레드는 다른 스레드가 모두 종료되면 자동종료.
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }   
            System.out.println("메인 스레드가 종료됩니다. ");    
        }   
    }

'Java' 카테고리의 다른 글

[Java] Garbage Collector (GC)  (0) 2024.06.03
[Java] Thread-Pool 이란?  (0) 2024.04.30
[Java] Pass By Value와 Pass By Reference의 차이  (0) 2023.08.24
[Java] Stream의 map() VS flatMap()  (0) 2023.08.24
[Java] equals와 hashCode 함수  (0) 2023.08.23