Notice
Recent Posts
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 스프링
- 폼태그
- 마이바티스
- html
- 설정
- jstl
- 설치
- EL태그
- 필터체인
- 자바
- springboot
- jsp 내부객체
- SESSION
- Spring
- 이클립스
- jquery
- Oracle
- 깃허브
- Eclipse
- 자바스크립트
- 면접
- MySQL
- jsp
- 깃허브 간단요약
- 알고리즘
- 셋업
- java
- 제이쿼리
- 오라클
- 버튼
Archives
- Today
- Total
은은하게 코드 뿌시기
쓰레드 그룹(thread group) 본문
728x90
:서로 관련된 쓰레드 그룹을 다루기 위한것으로, 폴더관리 개념과 비슷하다.
쓰레드 그룹에 다른 쓰레드 그룹을 포함 시킬 수 있다.
보안상의 이유로 도입된 개념으로, 자신이 속한 쓰레드그룹이나 하위 쓰레드 그룹은 변경 할 수 있지만 다른 쓰레드 그룹의 쓰레드를 변경할 수 없다. 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) | 쓰레드 그룹의 최대우선순위설정 , 쓰레드가 쓰레드 그룹에 추가 되기전에 호출 해야함. |
쓰레드를 쓰레드 그룹에 포함시키려면 Thread 의 생성자를 이용해야한다.
*Thread 생성자
Thread(ThreadGroup group, String name) Thread(ThreadGroup group, Runnable target) Thread(ThreadGroup group, Runnable target, String name) Thread(ThreadGroup group, Runnable target, String name, long stackSize) |
*Thread 의 ThreadGroup과 연관된 메소드
ThreadGroup getThreadGroup() | 쓰레드 자신이 속한 쓰레드 그룹을 반환한다. |
void uncaughtException(Thread t, Throwable e) | 쓰레드 그룹의 쓰레드가 처리되지 않은 예외에 의해 실행이 종료되었을때, JVM에 의해 이 메서드가 자동적으로 호출된다. |
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
|
package kr.co.threadtest;
public class ThreadEx9 {
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.setMaxPriority(3);
Runnable r = new Runnable() {
@Override
public void run() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
new Thread(grp1 , r, "th1").start();
new Thread(subGrp1, r, "th2").start();
new Thread(grp2 , r, "th3").start();
System.out.println(">>List of ThreadGroup : " + main.getName()
+ "active threadgroup : " + main.activeGroupCount()
+ "actvie thread" + main.activeCount());
main.list();
}
}
|
cs |
수행결과 |
>>List of ThreadGroup : mainactive threadgroup : 3actvie thread4 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] |
728x90
'자바 > 자바 기본' 카테고리의 다른 글
java Calendar , date (0) | 2022.07.25 |
---|---|
데몬쓰레드(daemon thread) (0) | 2022.07.06 |
쓰레드 우선순위 (0) | 2022.07.05 |
스레드 기초 및 예제 (0) | 2022.07.05 |
JAVA SQL DB 연동 소스 예제 (0) | 2022.06.27 |
Comments