이번 주 미션 550쪽 [직접 해보는 손 코딩] 코딩 과정 및 실행 결과를 인증샷으로 남긴다.
과제 내용은 12-2. 스레드 제어 중 데몬 스레드에 대한 예제이다.
여기서 데몬(daemon) 스레드란 주 스레드의 작업을 돕는 보조적인 역활을 수행하는 스레드로 주 스레드가 종료되면 데몬 스레드는 강제적으로 자동 종료된다.
예제를 소개하면, 1초 주기로 데몬 스레드에서 save() 메서드를 자동 호출 하고, 메인 스레드가 3초 후 종료되면 데몬 스레드도 같이 종료되는 것을 확인할 수 있다.
1초 주기로 save() 메서드를 호출하는 데몬 스레드
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();
}
}
}
메인 스레드가 실행하는 코드
public class DaemonExample {
public static void main (String[] args) {
AutoSaveThread autoSaveThread = new AutoSaveThread();
autoSaveThread.setDaemon(true); // AutoSaveThread를 데몬 스레드로 만듦
autoSaveThread.start();
try {
Thread.sleep(3000);
} catch (InterruptedException e) {}
System.out.println("메인 스레드 종료");
}
}
데몬 스레드를 만들기 위해서는 주 스레드가 데몬이 될 스레드의 setDaemon(true)를 호출 해주면 된다. 주의할 점은 start() 메서드가 호출되고 나서 setDaemon(true)를 호출하면 IllegalThreadStateException이 발생하기 때문에 start() 메서드 호출 전에 setDaemon(true)를 호출해야 한다.
실행 결과:
메인 스레드가 종료되면서 데몬 스레드가 종료되는 것을 확인 할 수 있다.
'JAVA > #혼공단3기' 카테고리의 다른 글
[혼공자] 5주차 - 13장 컬렉션 프레임워크 키워드 정리 (0) | 2020.03.05 |
---|---|
[혼공자] 4주차 - (선택) 멀티스레드 손 코딩 (0) | 2020.02.25 |
[혼공자] 3주차 - 혼공 용어 노트 활용 (0) | 2020.02.21 |
[혼공자] 2주차 - 상속(기본미션) (0) | 2020.02.13 |
[혼공자] 1주차 - 환경 변수 설정 (0) | 2020.02.07 |