남궁성 님의 "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 스레드
- GC 수행
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 기록, 세션 관리
일반 스레드와의 관계
- 일반 스레드가 모두 종료되면 데몬 스레드는 강제적으로 종료됨
- 무한루프의 조건문을 이용해서 실행 후 대기하고 있다가 특정조건이 만족되면 작업을 수행하고 다시 대기합니다.
'Java' 카테고리의 다른 글
[Java의 정석] 15-2. 입출력: 문자 기반 스트림 (0) | 2023.11.29 |
---|---|
[Java의 정석] 15-1. 입출력: 바이트 기반 스트림 (0) | 2023.11.29 |
[Java의 정석] 13-1. 스레드: 프로세스와 스레드 (0) | 2023.11.27 |
[Java] Stream (2) | 2023.10.22 |
[Java][Tutorial] 3-3. Collections: Aggregate Operations (0) | 2023.10.20 |