chapter12. 멀티 스레드. 


12.7 데몬 스레드

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

- 주 스레드가 종료되면 데몬 스레드는 강제적으로 자동 종료

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


- 데몬 스레드 설정

// 주 스레드가 데몬이 될 스레드의 setDaemon(true)를 호출

// 반드시 start() 메소드 호출 전에 setDaemon(true)를 호출해야 한다

: 그렇지 않으면 lllegalThreadStateException이 발생


- 데몬 스레드 확인 방법

// isDaemon() 메소드의 리턴값을 조사



 1초 주기로 save() 메소드를 호출하는 데몬 스레드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package sec07.exam01_daemon;
 
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(); // 출력
        }
    }
}
cs

 메인 스레드가 실행하는 코드 // 3초 있다가 메인 스레드 종료

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package sec07.exam01_daemon;
 
public class DaemonExample {
    public static void main(String[] args) {
        AutoSaveThread autoSaveThread = new AutoSaveThread();
        autoSaveThread.setDaemon(true); // AutoSavaThread를 데몬 스레드로 만듬
        autoSaveThread.start();
        
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
        }
        
        System.out.println("메인 스레드 종료");
    }
}
cs





Posted by 너래쟁이
: