데몬쓰레드 : 일반쓰레드의 작업을 돕는 보조적인 역할을 수행하는 쓰레드이다.
일반쓰레드가 모두 종료되면 데몬쓰레드는 강제로 종료된다.
그 이유는 데몬쓰레드는 일반 쓰레드의 보조역할을 수행하는데 일반 쓰레드가 모두 종료되었다면 데몬쓰레드의 존재는 의미가 없어지기 때문이다. 데몬쓰레드의 예로는 가비지 컬렉터, 워드프로세스 자동저장, 화면 자동갱신 등이 있다.
데몬쓰레드는 무한루프와 조건문을 이용해서 실행 후 대기하고 있다가 특정 조건이 만족되면 작업을 수행하고 다시 대기하도록 작성한다.
데몬쓰레드 메소드
boolean isDaemon() : 쓰레드가 데몬쓰레드인지 확인한다. 데몬쓰레드라면 true를 반환한다.
void setDaemon(boolean on) : 쓰레드를 데몬 쓰레드로 또는 사용자 쓰레드로 변경하는 메서드이다. 매개변수 on을 true로 지정하면 데몬쓰레드가 되고 false로 지정하면 사용자용 쓰레드가된다.
사용자쓰레드가 종료되면 데몬쓰레드도 자동으로 종료되는것을 알수있다.
또한 데몬쓰레드는 무한 반복문과 특정 조건문을 통해서 작성하는것을 알 수 있다.
getAllStackTraces()를 이용하면 실행 중 또는 대기상태의(작업이 완료되지않은) 모든 쓰레드의 호출스택을 출력할 수 있다.
보면 생성한 쓰레드 thread1, thread2는 main 그룹에 속해있고 가비지컬렉션, 이벤트처리 등과 같이 보조작업을 수행하는 데몬쓰레드들은 system그룹에 속하는것을 알 수 있다.
자바 프로그램 실행시 JVM에서 많은 데몬 쓰레드를 생성한다.
'Programming > JAVA' 카테고리의 다른 글
쓰레드의 동기화 (0) | 2021.08.20 |
---|---|
쓰레드의 상태 및 제어 (0) | 2021.08.16 |
쓰레드 우선순위와 쓰레드 그룹 (0) | 2021.08.13 |
쓰레드(Thread) (0) | 2021.08.13 |
에너테이션(annotation) (0) | 2021.08.11 |