자바

JAVA 자바 Thread 자바 스레드 : 데몬 스레드

알통몬_ 2017. 3. 15. 11:16
반응형


안녕하세요 알통몬입니다.

공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!

포스팅 내용이 찾아주신 분들께 도움이 되길 바라며

더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^

 

데몬 스레드

 주 스레드의 작업을 돕는 보조적인 역할을 수행하는 스레드.

주 스레드가 종료되면 데몬 스레드는 강제적으로 자동종료됩니다. 

데몬 스레드는 주 스레드가 종료되면 강제로 종료된다는 것만 제외하면

일반 스레드와 별다른 차이가 없습니다. 

데몬 스레드 적용 예)

워드 프로세서의 자동 저장, 미디어 플레이어의 동영상 및 음악 재생, 가비지 컬렉터 등등. 

이 기능들은 주 스레드가 종료되면 같이 종료됩니다. 

스레드를 데몬으로 만들어주려면 주 스레드가 데몬이 될 스레드의 setDaemon(true)를 호출하면 됩니다. 

public static void main(String[] args){

      AutoSaveThread thread = new AutoSaveThread();

      thread.setDaemon(true);

      thread.start();

      ....

}

주의할 점은  start()메서드를 호출하기 전 setDaemon(true)를 호출해야 합니다.

start() 메서드가 호출되고 나서 setDaemon(true)를 호출하면 IllegalThreadStateException이 발생!


isDaemon() 메서드 : 현재 실행 중인 스레드가 데몬 스레드인지 아닌지 구별

isDaemon()의 리턴값이 true라면 데몬 스레드. 

예제)

데몬 스레드

public class AutoSaveThread extends Thread {

public void save() {

System.out.println("작업 내용을 저장함.");

}

@Override

public void run() {

while(true) {

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

break;

}

save(); // 1초 주기로 save()메서드 호출

}

}

 

}


실행 클래스

public class DaemonExample {

public static void main(String[] args) {

AutoSaveThread autoSaveThread = new AutoSaveThread();

autoSaveThread.setDaemon(true); // 데몬스레드로 만들기

autoSaveThread.start();

try {

Thread.sleep(3000); // 메인 스레드가 종료되면 데몬 스레드도 같이 종료

} catch (InterruptedException e) {

}

System.out.println("메인 스레드 종료");

}

 

}

반응형