[Java] 쓰레드 Thread 4 - 쓰레드 그룹

Bam·2024년 3월 17일
0

Java

목록 보기
75/98
post-thumbnail

쓰레드 그룹

관련있는 클래스들을 모아서 패키지로 만들듯이 쓰레드 그룹을 통해서 관련있는 쓰레드들을 묶어서 관리할 수 있습니다. 패키지와 마찬가지로 그룹 내부에 다른 서브 그룹이 올 수도 있습니다.

쓰레드는 자신이 속한 그룹과 하위 그룹의 쓰레드 그룹을 변경할 수는 있지만, 다른 쓰레드 그룹을 변경할 수는 없습니다.

자바에서 모든 쓰레드는 반드시 쓰레드 그룹에 속해야만합니다. 하지만 우리는 그동안 쓰레드 그룹을 이용하지 않았었죠? 쓰레드 그룹을 만들지 않는 경우에는 자동적으로 자신을 생성한 쓰레드와 같은 쓰레드 그룹에 속하게 됩니다.

그동안의 예제는 main에서 만들어서 사용했으니 main 쓰레드가 속한 그룹에서 동작한 것이었습니다.


ThreadGroup 생성

쓰레드 그룹은 ThreadGroup을 통해 생성하고 사용합니다.

ThreadGroup 이름 = new ThreadGroup(그룹명);	//자동으로 현재 실행중인 그룹이 부모 그룹이 된다.
ThreadGroup 이름 = new ThreadGroup(부모 그룹명, 그룹명);	//부모 그룹을 지정해 그룹 생성

Thread 이름 = new Thread(그룹, 쓰레드이름);	//쓰레드 생성 후 그룹에 포함시키는 코드

다음은 쓰레드 그룹을 생성하고, 쓰레드 그룹 이름과 그룹의 부모 이름을 출력하는 예제 코드입니다.

public class Main {
    public static void main(String[] args) {
        ThreadGroup threadGroup = new ThreadGroup("Group1");

        Thread t1 = new Thread(threadGroup, "t1");
        Thread t2 = new Thread(threadGroup, "t2");

        System.out.println("t1 쓰레드의 그룹: " + t1.getThreadGroup().getName());
        System.out.println("t1 쓰레드 그룹의 부모 그룹: " + t1.getThreadGroup().getParent().getName());
        System.out.println("t2 쓰레드의 그룹: " + t2.getThreadGroup().getName());
    }
}


ThreadGroup의 메소드

ThreadGroup에서 사용할 수 있는 메소드는 다음과 같습니다.

메소드설명
int activeCount()쓰레드 그룹의 활성화된 쓰레드의 수 반환
int activeGroupCount()쓰레드 그룹의 활성화된 쓰레드 그룹의 수 반환
void checkAccess()현재 실행중인 쓰레드가 쓰레드 그룹 변경 권한이 있는지 체크
권한이 없다면 SecurityException 반환
void destroy()현재 쓰레드 그룹과 하위 쓰레드 그룹 삭제
그룹이 비어있어야만 실행 가능
int enumerate(Thread[] t)
int enumerate(ThreadGroup[] tg)
쓰레드 그룹에 속하는 쓰레드 또는 쓰레드 그룹을 지정된 배열에 담고 그 수를 반환
두번째 매개변수로 true를 전달하면 하위 그룹의 쓰레드/쓰레드 그룹까지 배열에 담음
int getMaxPriority()쓰레드 그룹의 최대 우선순위 반환
String getName()쓰레드 그룹의 이름 반환
ThreadGroup getParent()쓰레드 그룹의 부모 쓰레드 그룹 반환
void interrupt()쓰레드 그룹의 모든 쓰레드는 interrupt
boolean isDaemon()쓰레드 그룹이 데몬 쓰레드 그룹인지를 반환
boolean isDestroyed()쓰레드 그룹이 삭제되었는지를 반환
void list()쓰레드 그룹에 속한 쓰레드와 하위 쓰레드 그룹의 정보를 취득
boolean parentOf(ThreadGroup g)g의 상위 쓰레드 그룹인지를 반환
void setDaemon(boolean b)쓰레드 그룹을 데몬 그룹으로 설정/해제
void setMaxPriorty(int p)쓰레드 그룹의 최대 우선순위 설정

주요한 메소드들만 정리했으니 전체적인 내용은 공식 문서를 참조해주세요.

데몬 쓰레드는 일반 쓰레드의 작업을 도와주는 보조 쓰레드입니다.

0개의 댓글