boolean isDaeemon() : 쓰레드가 데몬 쓰레드인지 확인한다. 데몬 쓰레드이면 true를 반환
void setDaemon(boolean on) : 쓰레드를 데몬 쓰레드로 또는 사용자 쓰레드로 변경한다. (매개변수 on을 true로 지정하면 데몬 쓰레드가 된다.)
IllegalThreadStateException
이 발생한다.public class Ex13_7 implements Runnable{
static boolean autoSave = false;
public static void main(String[] args) {
Thread t = new Thread(new Ex13_7()); // Thread(Runnable r)
t.setDaemon(true);
t.start();
for (int i = 1; i <= 10; i++) {
try{
Thread.sleep(1000);
} catch (InterruptedException e){}
System.out.println(i);
if (i == 5) {
autoSave = true;
}
}
System.out.println("프로그램을 종료합니다.");
}
public void run(){
while (true) {
try{
Thread.sleep(3 * 1000);
} catch(InterruptedException e) {}
//autoSave의 값이 true이면 autoSave()를 호출
if(autoSave){
autoSave();
}
}
}
public void autoSave(){
System.out.println("작업파일이 자동저장되었습니다.");
}
}
상태 | 설명 |
---|---|
NEW | 쓰레드가 생성되고 아직 start() 가 호출되지 않은 상태 |
RUNNABLE | 실행 중 또는 실행 가능한 상태 |
BLOCKED | 동기화블럭에 의해서 일시정지된 상태(lock이 풀릴 때까지 기다리는 상태) |
WAITING, TIMED_WAITING | 쓰레드의 작업이 종료되지는 않았지만, 실행가능하지 않은(unrunnable) 일시정지 상태. TIMED_WAITING은 일시정지 시간이 지정된 경우를 의미함 |
TERMINATED | 쓰레드의 작업이 종료된 상태 |