728x90
반응형

쓰레드 그룹(thread group)

쓰레드 그룹은 서로 관련된 쓰레드를 그룹으로 다루기 위한 것으로, 폴더를 생성해서 관련된 파일을 함께 넣어서 관리하는 것처럼 쓰레드 그룹을 생성해서 쓰레드 그룹으로 묶어서 관리할 수 있습니다.
폴더안에 폴더를 넣을 수 있듯이 쓰레드 그룹에 다른 쓰레드 그룹을 포함 시킬 수 있으며, 보안상 도입된 개념으로 자신이 속한 쓰레드 그룹이나 하위 쓰레드 그룹은 변경할 수 있지만, 다른 쓰레드 그룹의 쓰레드는 변경할 수 없습니다.

쓰레드를 쓰레드 그룹에 포함시키려면 Thread의 생성자를 이용해야합니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
class ThreadEx{
    public static void main(String args[]){
        ThreadGroup main = Thread.currentThread().getThreadGroup();
        ThreadGroup grp1 = new ThreadGroup("Group1");
        ThreadGroup grp2 = new ThreadGroup("Group2");
 
        ThreadGroup subGrp1 = new ThreadGroup(grp1, "subGroup1");
        
        // 쓰레드 그룹 grp1의 최대우선순위를 3으로 변경
        grp1.setMaxPriority(3);
       
        Thread th1 = new Thread(grp1, "th1");
        Thread th2 = new Thread(subGrp1, "th2");
        Thread th3 = new Thread(grp2, "th3");
 
        th1.start();
        th2.start();
        th3.start();
 
        System.out.println(">>> List of ThreadGroup : "+ main.getName()
                           +", Active ThreadGroup : "+ main.activeGroupCount()
                           +", Active Thread : "+main.activeCount());
        main.list()
    }
}
 
/* 실행결과
   >>> List of ThreadGroup : main, Active ThreadGroup : 3, Active Thread : 4
       java.lang.ThreadGroup[name=main, maxpri=10] Thread[main, 5, main]
       java.lang.ThreadGroup[name=Group1, maxpri=3] Thread[th1, 3, Group1]
       java.lang.ThreadGroup[name=subGroup1, maxpri=3] Thread[th2, 3, subGroup1]
       java.lang.ThreadGroup[name=Group2, maxpri=10] Thread[th3, 5, Group2]
*/
cs




1
2
3
4
5
6
7
8
9
10
11
// Thread 클래스
Thread(Thread group, String name)
Thread(Thread group, Runnable target)
Thread(Thread group, Runnable target, String name)
Thread(Thread group, Runnable target, String name, long stackSize)
 
static int activeCount()
: 쓰레드 자신이 속한 쓰레드 그룹에 작업이 완려되지 않은 쓰레드의 수를 반환합니다.
 
ThreadGroup getThreadGroup()
: 쓰레드 자신이 속한 쓰레드 그룹을 반환합니다.
cs


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
// ThreadGroup 클래스
ThreadGroup(String name)
: 지정된 이름의 새로운 쓰레드 그룹을 생성합니다.
 
ThreadGroup(ThreadGroup parent, String name)
: 지정된 쓰레드 그룹에 포함되는 새로운 쓰레드 그룹을 생성합니다.
 
int activeCount()
: 쓰레드 그룹에 포함된 활성상태에 있는 쓰레드의 수를 반환합니다.
 
int activeGroupCount()
: 쓰레드 그룹에 포함된 활성상태에 있는 쓰레드 그룹의 수를 반환합니다.
 
void checkAccess()
: 현재 실행중인 쓰레드가 쓰레드 그룹을 변경할 권한이 있는지 체크힙니다.
  만일 권한이 없다면 SecurityException을 발생시킵니다.
 
void destroy()
: 쓰레드 그룹과 하위 쓰레드 그룹까지 모두 삭제합니다. 
  쓰레드 그룹이나 하위 쓰레드 그룹이 비어있어야합니다.
 
int enumerate(Thread[] list)
int enumerate(Thread[] list, boolean recurse)
int enumerate(ThreadGroup[] list)
int enumerate(ThreadGroup[] list, boolean recurse)
: 쓰레드 그룹에 속한 쓰레드 또는 하위 쓰레드 구룹의 목록을 지정된 배열에 담고 그 개수를
  반환합니다. 두 번째 매개변수인 recurse의 값을 true로 하면 쓰레드 그룹에 속한 하위
  쓰레드 그룹에 쓰레드 또는 쓰레드 그룹까지 배열에 담습니다.
 
int getMaxPriority
: 쓰레드 그룹의 최대우선순위를 반환합니다.
 
String getName()
: 쓰레드 그룹의 이름을 반환합니다.
 
ThreadGroup getParent()
: 쓰레드 그룹의 상위 쓰레드그룹을 반환합니다.
 
void interrupt()
: 쓰레드 그룹에 속한 모든 쓰레드를 interrupt합니다.
 
boolean isDaemon()
: 쓰레드 그룹이 데몬 쓰레드긃인지 확인합니다.
 
boolean isDestroyed()
: 쓰레드 그룹이 삭제되었는지 확인합니다.
 
void list()
: 쓰레드 그룹에 속한 쓰레드와 하위 쓰레드그룹에 대한 정보를 출력합니다.
 
boolean parentOf(ThreadGroup g)
: 지정된 쓰레드 그룹을 상위 쓰레드그룹인지 확인합니다.
 
void setDaemon(boolean daemon)
: 쓰레드 그룹을 데몬 쓰레드그룹으로 설정/해제 합니다.
 
void setMaxPriority(int pri)
: 쓰레드 그룹의 최대우선순위를 설정합니다.
cs



728x90
반응형

'JAVA > JAVA 스레드' 카테고리의 다른 글

[java] wait()와 notify()  (0) 2017.11.02
[java] 쓰레드의 동기화  (0) 2017.11.02
[java] 쓰레드의 실행제어  (0) 2017.11.02
[java] 데몬 쓰레드  (0) 2017.11.01
[java] 쓰레드의 우선순위  (0) 2017.11.01
[java] 싱글쓰레드와 멀티쓰레드  (0) 2017.11.01
[java] start()와 run()  (0) 2017.11.01
[java] 쓰레드 구현 및 실행  (0) 2017.11.01
블로그 이미지

nineDeveloper

안녕하세요 현직 개발자 입니다 ~ 빠르게 변화하는 세상에 뒤쳐지지 않도록 우리모두 열심히 공부합시다 ~! 개발공부는 넘나 재미있는 것~!

,