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 |
[출처] [java] 쓰레드 그룹|작성자 Simpolor
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 |