TIL 20240615 데몬 쓰레드와 사용자 쓰레드
2024. 6. 15. 21:24ㆍ자바
1. 사용자 쓰레드
보이는 곳(foregorund) 에서 실행되는 높은 우선순위를 가진 쓰레드를 말하며, 프로그램 기능을 담당하며 대표적인 사용자 쓰레드로는 메인 쓰레드가 있다. 참고로 기존에 만들었던 쓰레드들이 대부분 사용자 쓰레드라고 알면 된다.
2. 데몬 쓰레드
보이지 않는곳(background) 에서 실행되는 낮은 우선순위를 가진 쓰레드를 말하며 보조적인 역할을 담당한다.
대표적인 데몬 쓰레드로는 메모리 영역을 정리해주는 가비지 컬렉터(GC)가 있다.
public class Main {
public static void main(String[] args) {
Runnable demon = () -> {
for (int i = 0; i < 1000000; i++) {
System.out.println("demon");
}
};
Thread thread = new Thread(demon);
thread.setDaemon(true); // true로 설정시 데몬스레드로 실행됨
thread.start();
for (int i = 0; i < 100; i++) {
System.out.println("task");
}
}
}
demon 쓰레드는 우선순위가 낮고 다른 쓰레드가 모두 종료되면 강제 종료 당하기 때문에 main() 쓰레드의 task가 100번이 먼저 찍히면 종료되어 1000000번 수행이 되지 않고 종료된다.
⚠️ JVM 은 사용자 쓰레드의 작업이 끝나면 데몬 쓰레드도 자동으로 종료시켜 버린다.
'자바' 카테고리의 다른 글
TIL 20240618 Wrapper 객체 (0) | 2024.06.18 |
---|---|
TIL 20240612 쓰레드 (0) | 2024.06.12 |
TIL 20240611 default 메서드와 static 메서드 (0) | 2024.06.11 |
TIL 20240610 Getter 과 Setter (1) | 2024.06.10 |