본문 바로가기

강좌/JAVA THREAD

자바 쓰레드(Thread) - 쓰레드그룹(ThreadGroup) 예제

1. 서로 관련된 스레드를 그룹으로 다루기 위한것

2. 스레드 그룹에 다른 스레드 그룹을 포함 시킬 수 있다.

3. 보안상의 이유로 도입된 개념

    - 자신이 속한 스레드 그룹이나 하위 스레드 그룹은 변경 할 수 있지만, 다른 스레드 그룹의 스레드를 변경 할 수 없다.

4. 모든 스레드는 반드시 스레드 그룹에 포함되어 있어야 한다.

    - 스레드 그룹을 지정하는 생성자를 사용하지 않는 스레드는 기본적으로 자신을 생성한 스레드와 같은 그룹에 속하게 된다.

5. 자바 어플리케이션이 실행되면 JVM은 main과 system이라는 스레드 그룹을 만들고 JVM운영에 필요한 스레드들을 생성해서 이 스레드 그룹에 포함시킨다.

    - 우리가 생성하는 모든 스레드 그룹은 main 스레드의 하위 스레드 그룹이 되며, 스레드 그룹을 지정하지 않고 생성한 스레드는 자동적으로 main 스레드 그룹에 속하게 된다.


예제를 만들어 보자.

우선 메인메소드도 쓰레드라고 했다. 쓰레드 그룹을 지정 안해주면 자바가 알아서 지정한다. 진짜인지 아닌지 보자.


조금 소스가 짤렸지만 내용은

ThreadGroup main = Thread.currentThread().getName(); 이다.

현재 스레드 그룹의 이름을 살펴 보는것이다.

결과는 main. main메소드도 스레드라고 했고 main스레드 그룹에 속해 있다.


그럼 ThreadGroup을 만들어서 확인해보자. Subgroup도 만들어 보자.




스레드 그룹 2개(이중 하나는 하위 스레드 그룹을 가지고 있다. 총 3개)

ThreadGroup 생성후 레버런스 변수.list()하면 활동하는 스레드 그룹 리스트를 볼 수 있다.