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();
}
}
}
본고에서 기술한 것이 여러분의 자바 프로그램 설계에 도움이 되기를 바랍니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.