728x90
deamon thread
데몬스레드는 주 스레드의 작업을 돕는 보조적인 역할을 수행하는 스레드이다.
주 스레드가 종료되면 데몬 스레드는 강제적으로 자동 종료된다.
(그이유는 주 스레드의 보조 역할을 하므로 존재의미가 없어지기 때문)
이 점을 제외하면 일반스레드랑 크게 차이가 없다.
데몬스레드 적용 예:
워드프로세서의 자동저장, 미디어플레이어의 동영상 및 음악재생, 가비지컬렉터 등
이 기능들은 주 스레드(워드프로세스,미디어플레이어,jvm)가 종료되면 같이 종료
스레드를 데몬으로 만들기 위해서는 주 스레드가 데몬이 될 스레드의 setDaemon(true)를 호출해 주면 됨
public static void main(String[] args) {
AutoSaveThread thread = new AutoSaveThread();
thread.setDaemon(true);
thread.start();
...
}
주의할 점!
스레드를 실행하는 start() 메소드가 호출되고 나서 setDaemon(true)를 호출하면
IllegalThreadStateException이 발생하기 때문에
start() 메소드 호출 전에 setDaemon(true)를 호출해야 함
현재 실행 중인 스레드가 데몬 스레드인지 아닌지를 구별하는 방법:
isDaemon() 메소드의 리턴값을 조사 - 데몬 스레드일 경우 true를 리턴
[데몬스레드 예제]
AutoSaveThread.java - 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();
}
}
DaemonExample.java - 메인 스레드가 실행하는 코드
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("메인 스레드 종료");
}
}
728x90
'STUDY > JAVA' 카테고리의 다른 글
[JAVA] Logging이란? (0) | 2023.03.10 |
---|---|
[JAVA] JavaBean이란 (0) | 2023.03.10 |
[JAVA] 컴파일, 빌드, 배포에 대해 이해하기 (0) | 2023.01.17 |
[JAVA] String.format() - %d, %n, %f, %c, %s, %b (0) | 2022.12.28 |
[JAVA] 참조변수 super, 생성자 super() (0) | 2022.12.05 |