본문 바로가기

Programming/JAVA

멀티 스레드(8) - 스레드 그룹 1

 

 

 

 

스레드 그룹(ThreadGroup)은 관련된 스레드를 일괄적으로 묶어서 관리할 목적으로 사용됩니다. 기본적으로 JVM이 실행되면 system 스레드 그룹을 만들게되고, JVM 운영에 필요한 스레드들을 system 스레드 그룹에 포함하게 됩니다. 

 

그리고 system의 하위 스레드 그룹으로서 main 스레드 그룹이 생성됩니다. 그리고 '메인 스레드'를 이 main 스레드 그룹에 포함하게 됩니다. 

 

기본적으로 스레드는 반드시 하나의 스레드 그룹에 포함되어야 합니다. 그런데 명시적으로 특정 스레드 그룹에 할당하지 않으면, 기본적으로는 자신을 생성한 스레드와 같은 스레드 그룹에 속하게 됩니다. 우리가 지금까지 생성한 작업 스레드는 대부분 main 스레드가 생성합니다. 그래서 결국 이들은 기본적으로 main 스레드 그룹에 속하게 됩니다. 

 

 

 


 

 

 

현재 스레드가 속한 스레드 그룹의 이름을 얻기 위해서는 아래와 같이 코드를 작성합니다. 

ThreadGroup group = Thread.currentThread().getThreadGroup();
String groupName = group.getName();

 

 

어떤 프로세스에서 실행하는 모든 스레드에 대한 정보는 Map 컬렉션을 통해서 가져올 수 있습니다. 

 

 

 

컬렉션 프레임워크(4) - Map 컬렉션 1 : Map의 개념[1/2]

이번에는 Map 컬렉션에 대해서 살펴보겠습니다. Map 컬렉션은 키(key)와 값(value)으로 구성된 Entry 객체를 저장하는 구조입니다. 중요한 특성 중 하나는, key는 중복 저장할 수 없으며 value는 중복 저

nozeroslope.tistory.com

 

이는 Thread의 static 메서드인 getAllStackTraces( )를 사용해 얻어올 수 있습니다. 아래의 예제를 보겠습니다. 

 

Map<Thread, StackTraceElement[]> map = Thread.getAllStackTraces();

 

 

getAllStackTraces( )는 Map 타입의 객체를 리턴하는데, K는 스레드 객체이고 V는 스레드의 상태 기록들을 갖고 있는 StackTraceElement[] 배열이 됩니다. Map 컬렉션은 위 아티클을 다시 참조하세요. 예제에서 좀 더 상세하게 실제 활용법을 보도록 하겠습니다.