Java 스레드의 수호 스레드(Daemon) 사용 사례

1971 단어 Java수호 스레드
본고는 자바 스레드의 수호 스레드(Daemon) 사용법을 실례로 다루고 있다.여러분에게 참고할 수 있도록 나누어 드리겠습니다.구체적으로 다음과 같습니다.
데몬
Java에는 두 가지 Thread가 있습니다. "지킴 스레드 데몬"과 "사용자 스레드 User"입니다.
우리가 이전에 본 예는 모두 사용자이다. 수호 루트는'백그라운드에서 유니버설 지원을 제공하는 루트'로 프로그램 본체에 속하지 않는다.
표면적으로 우리는 수호 라인을 가상 기기 (virtual machine) 가 내부에서 만든 것으로 이해하기 쉽고, 사용자 라인은 자신이 만든 것으로 이해하기 쉽다.사실은 그렇지 않다. 어떤 스레드도'수호 스레드 데몬'이나'사용자 스레드 User'가 될 수 있다.그들은 거의 모든 면에서 동일하며 유일한 차이점은 가상 머신이 언제 떠나는지 판단하는 것이다.
사용자 스레드: Java 가상 머신은 모든 비수호 스레드가 떠난 후에 자동으로 떠납니다.
수호 루트: 수호 루트는 사용자의 루트를 서비스하는 데 사용되며, 다른 사용자의 루트가 실행되지 않으면 서비스 대상이 없고, 계속할 이유도 없습니다.
setDaemon(boolean on) 방법은 라인을 쉽게 설정할 수 있는 Daemon 모드,true는 Daemon 모드,false는 User 모드입니다.setDaemon(boolean on) 방법은 스레드가 시작되기 전에 호출해야 합니다. 스레드가 실행 중일 때 호출하면 이상이 발생합니다.isDaemon 방법은 이 스레드가 수호 스레드인지 테스트합니다.특히 수호 라인에서 다른 라인이 생성되면 새로 생성된 라인은 데몬 속성을 설정하지 않아도 수호 라인이 됩니다. 사용자 라인도 마찬가지입니다.
예: 우리가 익숙한 자바 쓰레기 수거 라인은 전형적인 수호 라인이다. 우리 프로그램에 실행 중인Thread가 없으면 프로그램에 쓰레기가 생기지 않고 쓰레기 수거기도 할 일이 없기 때문에 쓰레기 수거 라인이 자바 가상 컴퓨터에 남은 라인일 때 자바 가상 기회는 자동으로 떠난다.

import java.io.IOException;
/**
 *  
 */
public class TestMain4 extends Thread {
  public TestMain4() {
  }
  /**
   *  run , 
   */
  public void run() {
    for(int i = 1; i <= 100; i++){
      try {
        Thread.sleep(100);
      } catch (InterruptedException ex) {
        ex.printStackTrace();
      }
      System.out.println(i);
    }
  }
  public static void main(String [] args){
    TestMain4 test = new TestMain4();
    test.setDaemon(true);
    test.start();
    System.out.println("isDaemon = " + test.isDaemon());
    try {
      System.in.read();
      //  , , ,main , 
    } catch (IOException ex) {
      ex.printStackTrace();
    }
  }
}

본고에서 기술한 것이 여러분의 자바 프로그램 설계에 도움이 되기를 바랍니다.

좋은 웹페이지 즐겨찾기