13-6. 第3グループ
Thread Group(Thread Group)
相互に関連付けられたThreedの束.
ねじグループは、ディレクトリのように構造化された組み込み関係を有することもできる.
ねじグループは、その属するグループまたはサブグループのねじを変更できます.
他のネジセットのネジは変更不可
すべてのねじがねじグループに含まれている必要があるため、グループを作成者として指定します.
プログラマが作成したすべてのねじグループは、
ねじグループを指定せずにねじを作成する場合は、
ThreadGroup
所属するねじグループを返します
void
スレッドグループ内のスレッドが未処理の例外によって終了した場合、JVMはこのメソッドを自動的に呼び出します.
Monitor Ctrl-Break ThreadはIntelliJが生成したThreadである.
このとき、G 1の最大優先度は
参照変数なしで
このねじの参照はねじ群に格納されているので、
相互に関連付けられたThreedの束.
ねじグループは、ディレクトリのように構造化された組み込み関係を有することもできる.
ねじグループは、その属するグループまたはサブグループのねじを変更できます.
他のネジセットのネジは変更不可
すべてのねじがねじグループに含まれている必要があるため、グループを作成者として指定します.
Thread(Threadgroup tg, String name)
Thread(Threadgroup tg, Runnable r)
Thread(Threadgroup tg, Runnable r, String name)
Thread(Threadgroup tg, Runnable r, String name, long stackSize)
Java
からなるアプリケーションを実行する場合、JVM
はmain
とsystem
というスレッドグループを作成し、JVM
を実行するために必要なスレッドを作成し、グループに含めます.プログラマが作成したすべてのねじグループは、
main
グループのサブグループになります.ねじグループを指定せずにねじを作成する場合は、
main
グループに入ります.Thread
類におけるねじ群に関する方法ThreadGroup
getThreadGroup
()所属するねじグループを返します
void
uncaughtException
(Thread t, Throwable e)スレッドグループ内のスレッドが未処理の例外によって終了した場合、JVMはこのメソッドを自動的に呼び出します.
class ThreadExample {
public static void main(String[] args) throws Exception {
ThreadGroup main = Thread.currentThread().getThreadGroup(); // main 쓰레드 그룹
ThreadGroup g1 = new ThreadGroup("G1");
ThreadGroup g2 = new ThreadGroup("G2");
ThreadGroup subG1 = new ThreadGroup(g1, "SubG1"); // G1 그룹의 하위(sub) 그룹
g1.setMaxPriority(3); // G1 쓰레드 그룹의 최대 우선순위를 3으로 변경
Runnable r = new Runnable() { // 익명 클래스로 인터페이스 구현 (일회성)
@Override
public void run() {
try {
Thread.sleep(1000); // 쓰레드 정보를 출력하기도 전에 쓰레드가 종료되는 것을 방지하기 위해 1초 멈춤
} catch (InterruptedException e) {}
}
};
new Thread(g1, r, "t1").start(); // 참조 변수 없이 쓰레드 생성 후 실행
new Thread(subG1, r, "t2").start();
new Thread(g2, r, "t3").start();
System.out.println("Thread Group Name: " + main.getName()); // 쓰레드 그룹의 이름
System.out.println("Active Group Count: " + main.activeGroupCount()); // 활성 상태인 쓰레드 그룹의 개수
System.out.println("Active Thread Count: " + main.activeCount()); // 활성 상태인 쓰레드의 개수
System.out.println();
main.list(); // 쓰레드 그룹에 속한 모든 쓰레드와 하위 그룹 정보 출력
}
}
実行結果)Thread Group Name: main
Active Group Count: 3
Active Thread Count: 5
java.lang.ThreadGroup[name=main,maxpri=10]
Thread[main,5,main]
Thread[Monitor Ctrl-Break,5,main]
java.lang.ThreadGroup[name=G1,maxpri=3]
Thread[t1,3,G1]
java.lang.ThreadGroup[name=SubG1,maxpri=3]
Thread[t2,3,SubG1]
java.lang.ThreadGroup[name=G2,maxpri=10]
Thread[t3,5,G2]
インデントは、ねじグループの構造を出力します.Monitor Ctrl-Break ThreadはIntelliJが生成したThreadである.
このとき、G 1の最大優先度は
setMaxPriority()
が3として指定されるので、サブスレッドとグループの両方が同じ優先度値であると判断することができる.参照変数なしで
new Thread(...)
を使用してスレッドを作成し、直ちに実行するため、GC
で削除されたと考えられる.このねじの参照はねじ群に格納されているので、
GC
は削除されません.Reference
この問題について(13-6. 第3グループ), 我々は、より多くの情報をここで見つけました https://velog.io/@lhjun1028/13-6.-쓰레드-그룹テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol