Java의 데몬 스레드

Mohammad Irfan 2023년10월12일
  1. Java에서setDaemon()메소드를 사용하여 데몬 스레드 생성
  2. Java에서setDaemon()메소드를 사용하여 데몬 스레드 생성
  3. Java에서setDaemon()메소드를 사용하여 데몬 스레드 생성
Java의 데몬 스레드

이 튜토리얼은 데몬 스레드가 무엇이며 Java에서 데몬 스레드를 만드는 방법을 소개합니다.

Java에서 데몬 스레드는 다른 스레드에 대한 백그라운드 스레드를 지원하는 특수 스레드입니다. Java는 이러한 스레드를 사용하여 사용자 스레드 및 가비지 수집 등에 대한 특수 목적을 제공합니다.

데몬 스레드를 생성하기 위해 Java는 부울 인수를 사용하는setDaemon()메소드를 제공합니다. isDaemon()메소드는 현재 실행중인 스레드가 데몬 스레드인지 여부를 확인할 수 있습니다.

Java에서setDaemon()메소드를 사용하여 데몬 스레드 생성

이 예에서는Thread클래스의setDaemon()메소드를 사용하여 데몬 스레드를 생성합니다. 세 개의 스레드를 만들고 그중 두 개는 데몬 스레드로 설정됩니다. isDaemon()메소드를 사용하여 현재 실행중인 스레드가 데몬 스레드인지 여부를 확인합니다. 아래 예를 참조하십시오.

public class SimpleTesting extends Thread {
  public MainClass(String name) {
    super(name);
  }
  public void run() {
    boolean isDaemon = Thread.currentThread().isDaemon();
    System.out.println("Is this daemon thread: " + isDaemon);
  }
  public static void main(String[] args) {
    MainClass thread1 = new MainClass("Thread 1");
    MainClass thread2 = new MainClass("Thread 2");
    MainClass thread3 = new MainClass("Thread 3");
    thread1.setDaemon(true);
    thread1.start();
    thread2.start();
    thread3.setDaemon(true);
    thread3.start();
  }
}

출력:

Is this daemon thread: true
Is this daemon thread: false
Is this daemon thread: true

Java에서setDaemon()메소드를 사용하여 데몬 스레드 생성

데몬 스레드는 우선 순위가 낮은 스레드이며 항상 사용자 스레드 뒤에서 실행됩니다. 정수 값을 반환하는getPriority()메서드를 사용하여 스레드의 우선 순위를 확인할 수 있습니다. getName()메소드를 사용하여 현재 실행중인 스레드의 이름을 가져옵니다. 아래 예를 참조하십시오.

public class SimpleTesting extends Thread {
  public MainClass(String name) {
    super(name);
  }
  public void run() {
    boolean isDaemon = Thread.currentThread().isDaemon();
    System.out.println("Is this daemon thread: " + isDaemon + ", "
        + Thread.currentThread().getName() + ", " + Thread.currentThread().getPriority());
  }
  public static void main(String[] args) {
    MainClass thread1 = new MainClass("Thread 1");
    MainClass thread2 = new MainClass("Thread 2");
    MainClass thread3 = new MainClass("Thread 3");
    thread1.setDaemon(true);
    thread1.start();
    thread2.start();
    thread3.setDaemon(true);
    thread3.start();
  }
}

출력:

Is this daemon thread: true, Thread 1, 5
Is this daemon thread: false, Thread 2, 5
Is this daemon thread: true, Thread 3, 5

Java에서setDaemon()메소드를 사용하여 데몬 스레드 생성

데몬 스레드를 생성하는 동안setDaemon()메소드에 값을 설정 한 후 스레드를 시작합니다. 이미 실행중인 스레드를 데몬으로 설정하면 예외가 발생하기 때문에 필수적입니다. thread1으로start()메소드를 호출 한 다음 허용되지 않는setDaemon()을 호출합니다. 아래 예를 참조하십시오.

public class SimpleTesting extends Thread {
  public MainClass(String name) {
    super(name);
  }
  public void run() {
    boolean isDaemon = Thread.currentThread().isDaemon();
    System.out.println("Is this daemon thread: " + isDaemon + ", "
        + Thread.currentThread().getName() + ", " + Thread.currentThread().getPriority());
  }
  public static void main(String[] args) {
    MainClass thread1 = new MainClass("Thread 1");
    MainClass thread2 = new MainClass("Thread 2");
    MainClass thread3 = new MainClass("Thread 3");
    thread1.start();
    thread1.setDaemon(true);
    thread2.start();
    thread3.setDaemon(true);
    thread3.start();
  }
}

출력:

Is this daemon thread: false, Thread 1, 5
Exception in thread "main" java.lang.IllegalThreadStateException

관련 문장 - Java Thread