728x90
반응형
데몬 쓰레드 ( daemon thread )
데몬 쓰레드는 다른 일반 쓰레드(데몬 쓰레드가 아닌 쓰레드)의 작업을 돕는 보조적인 역할을 수행하는 쓰레드입니다. 일반 쓰레드가 모두 종료되면 데몬 쓰레드는 강제적으로 자동 종료됩니다.
그 이유는 데몬 쓰레드는 일반 쓰레드의 보조역할을 수행하므로 일반 쓰레드가 모두 종료되고 나면 데몬 쓰레드의 존재의 의미가 없기 때문입니다.
데몬 쓰레드는 무한루프와 조건문을 이용해서 실행 후 대기하고 있다가 특정 조건이 만족되면 작업을 수행하고 다시 대기하도록 작성합니다.
데몬 쓰레드는 일반 쓰레드와 작성방법과 실행방법이 같으며 다만 쓰레드를 생성한 다음 실행하기 전에 setDaemon(true)를 호출하기만 하면 됩니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | class ThreadEx implements Runnable{ static boolean autoSave = false; public static void main(String[] args){ Thread t = new Thread(new ThreadEx()); t.setDaemon(true); // 사용자 쓰레드로 변경합니다. ( 이 부분이 없으면 종료되지 않습니다. ) t.start(); for(int i=1; i<=20; i++){ try{ // Thread.sleep() 쓰레드를 재우기 위한 함수 (단위 ms) Thread.sleep(1000); // 1초마다 }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); // 3초마다 }catch(InterruptedException e){ } // autoSave의 값이 ture이면 autoSave()를 호출합니다. if(autoSave){ autoSave(); } } } public void autoSave(){ System.out.println("작업파일이 자동저장되었습니다."); } } /* 실행결과 1 2 3 4 5 6 작업파일이 자동저장되었습니다. 7 8 작업파일이 자동저장되었습니다. 9 10 11 작업파일이 자동저장되었습니다. 12 13 14 작업파일이 자동저장되었습니다. 15 16 17 18 작업파일이 자동저장되었습니다. 19 20 프로그램을 종료합니다. */ | cs |
1 2 3 4 5 6 | boolean isDaemon() : 쓰레드가 데몬 쓰레드인지 확인합니다. 데몬 쓰레드면 ture를 반환합니다. void setDaemon(boolean on) : 쓰레드를 데몬 쓰레드로 또는 사용자 쓰레드로 변경합니다. ( 매개변수 on의 값 ture로 지정하면 데몬 쓰레드가 됩니다. ) | cs |
[출처] [java] 데몬 쓰레드|작성자 Simpolor
728x90
반응형
'JAVA > JAVA 스레드' 카테고리의 다른 글
[java] wait()와 notify() (0) | 2017.11.02 |
---|---|
[java] 쓰레드의 동기화 (0) | 2017.11.02 |
[java] 쓰레드의 실행제어 (0) | 2017.11.02 |
[java] 쓰레드 그룹 (0) | 2017.11.01 |
[java] 쓰레드의 우선순위 (0) | 2017.11.01 |
[java] 싱글쓰레드와 멀티쓰레드 (0) | 2017.11.01 |
[java] start()와 run() (0) | 2017.11.01 |
[java] 쓰레드 구현 및 실행 (0) | 2017.11.01 |