스레드 그룹은 특성이 유사한 스레드를 하나의 묶음으로 다루기 위한 장치이다. 같은
그룹에 속한 스레드끼리만 정보를 변경할 수 있어 그룹을 구성하면 보안상의 이점이 있다. 디폴트로 두
개의 스레드 그룹이 생성되는데 main 그룹은 main 메서드로부터
시작하는 주스레드를 가지며 system 그룹은 백그라운드에서 가비지 컬렉터를 생성한다. 스레드 그룹의 생성자는 다음과 같다.
ThreadGroup(String name)
ThreadGroup(ThreadGroup parent, String name)
이름은 반드시 지정해야 하며 부모 그룹을 지정하여 계층을 구성할 수도 있다. 마치
디렉터리 안에 서브 디렉터리가 포함되는 것과 같다. 스레드 그룹의 주요 메서드는 다음과 같다.
void setDaemon(boolean daemon)
void setMaxPriority(int pri)
그룹 내의 모든 스레드를 일괄적으로 데몬으로 지정하거나 최대 우선순위를 제한한다. 이 외에 그룹에 포함된 스레드나 서브 그룹의 개수를 조사 및 열거하는 관리 메서드가 포함되어 있다. 스레드 그룹을 준비해 놓고 이 안에 스레드를 생성할 때는 Thread의
다음 생성자를 호출한다. 첫 번째 인수로 스레드가 소속될 그룹을 지정한다.
Thread(ThreadGroup group, String name)
Thread(ThreadGroup group, Runnable target)
애초에 스레드 그룹을 도입한 이유는 여러 개의 스레드를 묶어 두고 한꺼번에 일시 정지, 재개하거나 중단시키기 위해서였다. 그러나 안전성의 이유로 이런 메서드의
사용이 권장되지 않아 지금은 스레드 그룹을 사용할 이유가 거의 없다.
interrupt 메서드를 호출하여 그룹내의 모든 스레드에 일괄 인터럽트를
걸 수 있는 기능이 있지만 이마저도 필요한 경우가 드물다. 스레드 그룹은 대규모의 스레드 집합을 생성하고
보안이 중요한 초대형 프로젝트를 위한 장치이며 일반적인 응용 프로그램에 필요한 경우는 드물다.