반응형
#혼공단 #혼공챌린지 #혼공자
혼공 챌린지_자바 4주차 기본 미션
p.550 [직접 해보는 손코딩] 코딩 과정 및 실행 결과 인증샷
p.550_직접 해보는 손코딩
1초 주기로 save() 메소드를 호출하는 데몬 스레드 AutoSaveThread를 작성한 후
3초 뒤 메인 스레드가 종료되면 AutoSaveThread도 함께 종료되는 코드
1초 주기로 save() 메소드를 호출하는 데몬 스레드
package sec02.exam05;
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();
}
}
}
메인 스레드가 실행하는 코드
package sec02.exam05;
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("메인 스레드 종료");
}
}
실행 결과
작업 내용을 저장함.
작업 내용을 저장함.
작업 내용을 저장함.
메인 스레드 종료
데몬 스레드 (Daemon Thread)
주 스레드의 작업을 돕는 스레드 (보조적인 역할)
일반 스레드와 다른 점: 보조 역할이므로 주 스레드가 종료될 때 강제 종료된다.
사용 예: 자동 저장, 동영상, 음악 재생, 쓰레기 수집기 등에 사용된다.
스레드를 데몬으로 만드는 법
주 스레드가 데몬이 될 스레드의 setDaemon(true)를 호출하면 된다.
AutoSaveThread를 Daemon Thread로 만들기
public class DaemonExample {
public static void main(String[] args) {
...
//데몬 스레드 만들기
autoSaveThread.setDaemon(true);
...
}
}
실행 중인 스레드가 Daemon Thread인지 확인하는 방법
isDaemon() 메소드의 리턴값이 true이면 Daemon Thread이다.
주의할 점
start() 메소드 호출 후 setDaemon(true)를 호출하면 IllegalThreadStateException이 발생하므로
setDaemon(thue)를 먼저 호출한 뒤 start() 메소드를 호출해야 한다.
(∴ setDaemon(thue) 호출 -> start() 호출)
https://spongerice.tistory.com/112
반응형
'Language > [Java] 혼자 공부하는 자바' 카테고리의 다른 글
[#혼공챌린지] 혼자 공부하는 자바_5주차 기본미션 (0) | 2021.08.08 |
---|---|
[#혼공챌린지] 혼자 공부하는 자바_4주차 선택미션 (0) | 2021.08.01 |
[#혼공챌린지] 혼자 공부하는 자바_3주차 선택미션 (0) | 2021.07.25 |
[#혼공챌린지] 혼자 공부하는 자바_3주차 기본미션 (0) | 2021.07.25 |
[#혼공챌린지] 혼자 공부하는 자바_2주차 선택미션 (0) | 2021.07.19 |