YJ의 새벽

JAVA ( 데몬 쓰레드 ) 본문

SelfStudy/JAVA

JAVA ( 데몬 쓰레드 )

YJDawn 2023. 2. 7. 14:21

 

  • 데몬쓰레드

 

--일반 쓰레드의 작업을 돕는 보조적인 역할을 수행.

--일반 쓰레드가 모두 종료되면 자동적으로 종료.

-- ex)) 가비지 컬렉터, 자동저장, 화면 자동갱신 등등..에 사용 .

--무한루프와 조건문을 이용해서 실행 후 대기하다가,

   특정조건이 만족되면 작업을 수행하고, 

   다시 대기하도록 작성.

 

boolean isDaemon ()   :   쓰레드가 데몬쓰레드인지 확인, 참이면 true 를 반환

void setDaemon( boolean on) : 쓰레드를 데몬쓰레드 , 사용자 쓰레드로 변경

                                                  매개변수 on 을 true 로 지정하면 데몬쓰레드가 된다.

**setDaemon(boolean on) 은 반드시 start() 호출 전에 실행되여야함.

                                          그렇지않으면 오류발생.

 

    

 

    EX )))) 데몬쓰레드 예제.

public class Example implements Runnable {
	
	static boolean autoSave = false;
	
	public static void main(String[] args) {

		Thread thread = new Thread( new Example()); // Thread ( Runnable r )
		thread.setDaemon(true);        // 데몬으로 설정. 꼭 해줘야함.!!
		thread.start();
		
		for(int i=1; i <= 10; i++) {
			try {
				Thread.sleep(1000);          //1초마다
			}catch(InterruptedException e) {
				e.printStackTrace();
			}
			System.out.println(i);
			if( i==5 ) {              // 5초이후 데몬쓰레드 true .
				autoSave = true;
			}
		}
		System.out.println("프로그램종료");
		
	}
	@Override
	public void run() {                //  데몬쓰레드의 run() 재정의
		
		while(true) {
			try {
				Thread.sleep( 3 * 1000);      //3초마다 
			}catch(InterruptedException e) {
				e.printStackTrace();
			}
			if(autoSave) {                   // autoSave() 호출
				autoSave();
			}
		}
	}
	public void autoSave() {
		System.out.println("작업파일이 자동저장되었습니다");
	}	
}

 

 

 

 

 

 

 

'SelfStudy > JAVA' 카테고리의 다른 글

JAVA ( 쓰레드의 동기화 )  (0) 2023.02.08
JAVA (쓰레드의 메서드)  (0) 2023.02.07
JAVA (쓰레드 thread)  (0) 2023.02.07
JAVA (애너테이션)  (0) 2023.02.06
JAVA (열거형)  (0) 2023.02.06
Comments