-
[Java 자바] 12. 멀티 스레드 ③ 데몬 스레드, 스레드 그룹Programming/Java 2022. 9. 12. 15:39반응형
12-7. 데몬 스레드
- 주 스레드의 작업을 돕는 보조적 역할을 수행하는 스레드로, 주 스레드가 종료되면 강제적으로 종료됨
- setDaemon(true)를 호출함으로써 스레드를 데몬으로 만들 수 있음
- start() 메소드 이후 setDaemon(true)를 호출하면 IllegalThreadStateException이 발생하므로 이전에 호출해야 함
- isDaemon(): 실행 중인 스레드가 데몬스레드인지 아닌지 확인
public static void main(String[] args) { AutoSaveThread thread = new AutoSaveThread(); thread.setDaemon(true); thread.start(); ... }
12-8. 스레드 그룹
- 관련된 스레드를 묶어 관리할 목적으로 이용
- 명시적으로 스레드 그룹에 포함시키지 않으면, 기본적으로 자신을 생성한 스레드와 같은 스레드 그룹에 속하게 됨12-8-1. 스레드 그룹 이름 얻기
// 현재 스레드가 속한 스레드 그룹의 이름 얻기 ThreadGroup group = Thread.currentThread().getThreadGroup(); String groupName = group.getName(); // 프로세스 내에서 실행하는 모든 스레드에 대한 정보 얻기 Map<Thread, StackTraceElement[]> map = Thread.getAllStackTraces();
12-8-2. 스레드 그룹 생성
- 명시적으로 스레드 그룹을 만들고 싶을 경우, ThreadGroup 객체 생성을 통해 만들 수 있음
// 1. ThreadGroup 이름만 전달 (현재 스레드가 속한 그룹의 하위 그룹으로 생성됨) ThreadGroup tg = new ThreadGroup(String name); // 2. 부모 ThreadGroup을 지정 ThreadGroup tg = new ThreadGroup(ThreadGroup parent, String name); // 3. 새로운 스레드 그룹 생성 후, 이 그룹에 스레드를 포함하는 방법 Thread t = new Thread(ThreadGroup group, Runnable target); Thread t = new Thread(ThreadGroup group, Runnable target, String name); Thread t = new Thread(ThreadGroup group, Runnable target, String name, logn stackSize); Thread t = new Thread(ThreadGroup group, String name);
12-8-3. 스레드 그룹의 일괄 interrupt()
- 스레드 그룹을 사용하면, 개별 스레드를 모두 종료하기 위해 각각의 스레드에서 interrupt()를 할 필요 없이 일괄적으로 실행 가능
- 단, 개별 스레드의 예외처리는 하지 못하므로, 안전한 종료를 위해서는 개별 스레드가 예외처리를 해야 함
반응형'Programming > Java' 카테고리의 다른 글
[Java 자바] 14. 람다식 (0) 2022.09.14 [Java 자바] 12. 멀티 스레드 ④ 스레드풀 (0) 2022.09.12 [Java 자바] 12. 멀티 스레드 ② 동기화, 스레드 상태와 제어 (0) 2022.09.12 [Java 자바] 12. 멀티 스레드 ① 개념과 생성방법, 우선순위 (0) 2022.09.12 [Java 자바] 11. 기본 API 클래스 ⑧ Wrapper(포장), Math, Random 클래스 (0) 2022.09.04