남궁성 님의 "Java의 정석" 책을 정리한 포스팅 입니다.
 
5. 우선순위
- Thread 클래스는 우선순위라는 속성을 가지고 있습니다.
- 우선순위 값에 따라 스레드의 실행순서가 달라집니다.
- 사용자에게 빠르게 반응해야 하는 작업에 우선순위를 높게 부여합니다.
 
우선순위 지정하기
- 1~10이며, 숫자가 높을수록 우선순위가 높습니다.
- 부모 스레드로부터 상속받습니다.
 
6. 스레드 그룹
// 스레드 그룹 생성
ThreadGroup group = new ThreadGroup("CustomGroup");
// 그룹에 속한 스레드 생성
Thread t1 = new Thread(group, () -> {
    System.out.println("Thread 1 is running");
});
Thread t2 = new Thread(group, () -> {
    System.out.println("Thread 2 is running");
});
t1.start();
t2.start();
- 서로 관련된 스레드를 그룹으로 다루기 위한 것입니다.
- 모든 스레드는 반드시 스레드 그룹에 포함되어 있어야 합니다.
 
계층적 트리 구조
- 스레드 그룹에 다른 스레드 그룹을 포함시킬 수 있습니다.
 
Security Manager
- 보안 상의 이유로 도입되었음
- 특정 스레드가 시스템에 접근하는 것을 제한할 수 dlT음
 
Root 그룹
Main 그룹
main 스레드
사용자 스레드
 
System 그룹
Finalizer 스레드
 
7. 데몬 스레드
public class DaemonThreadExample {
    public static void main(String[] args) {
        // 데몬 스레드 생성
        Thread daemonThread = new Thread(() -> {
            while (true) {
                System.out.println("Daemon thread is running...");
                try {
                    Thread.sleep(1000); // 1초 대기
                } catch (InterruptedException e) {
                    System.out.println("Daemon thread interrupted");
                }
            }
        });
        // 데몬 스레드로 설정
        daemonThread.setDaemon(true);
        // 데몬 스레드 시작
        daemonThread.start();
        // 메인 스레드 3초 실행 후 종료
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("Main thread is exiting...");
    }
}
 
보조적인 역할
- 다른 일반 스레드의 작업을 돕는 스레드
- GC, Log 기록, 세션 관리
 
일반 스레드와의 관계
- 일반 스레드가 모두 종료되면 데몬 스레드는 강제적으로 종료됨
- 무한루프의 조건문을 이용해서 실행 후 대기하고 있다가 특정조건이 만족되면 작업을 수행하고 다시 대기합니다.