ThreadGroup 类表示一组线程,也可以包含其他的线程组。线程组形成一棵树,其中除了初始线程组外,每个线程组都有一个父线程组。
ThreadGroup 类声明
以下是 java.lang.ThreadGroup 类的声明:
public class ThreadGroup
extends Object
implements Thread.UncaughtExceptionHandler
ThreadGroup 类构造器
| 序号 |
构造器与描述 |
| 1 |
ThreadGroup(String name) |
| |
构造一个新的线程组。 |
| 2 |
ThreadGroup(ThreadGroup parent, String name) |
| |
创建一个新的线程组。 |
ThreadGroup 类方法
| 序号 |
方法与描述 |
| 1 |
int activeCount() |
| |
此方法返回此线程组中的活动线程数的估计值。 |
| 2 |
int activeGroupCount() |
| |
此方法返回此线程组中的活动组数的估计值。 |
| 3 |
void checkAccess() |
| |
此方法确定当前正在运行的线程是否有权限修改此线程组。 |
| 4 |
void destroy() |
| |
此方法销毁此线程组及其所有的子组。 |
| 5 |
int enumerate(Thread[] list) |
| |
此方法将指定数组中的此线程组及其子组中的所有活动线程复制进去。 |
| 6 |
int enumerate(Thread[] list, boolean recurse) |
| |
此方法将指定数组中的此线程组中的所有活动线程复制进去。 |
| 7 |
int enumerate(ThreadGroup[] list) |
| |
此方法将指定数组中的此线程组中的所有活动子组的引用复制进去。 |
| 8 |
int enumerate(ThreadGroup[] list, boolean recurse) |
| |
此方法将指定数组中的此线程组中的所有活动子组的引用复制进去。 |
| 9 |
int getMaxPriority() |
| |
此方法返回此线程组的最大优先级。 |
| 10 |
String getName() |
| |
此方法返回此线程组的名称。 |
| 11 |
ThreadGroup getParent() |
| |
此方法返回此线程组的父线程组。 |
| 12 |
void interrupt() |
| |
此方法中断此线程组中的所有线程。 |
| 13 |
boolean isDaemon() |
| |
此方法测试此线程组是否是守护线程组。 |
| 14 |
boolean isDestroyed() |
| |
此方法测试此线程组是否已被销毁。 |
| 15 |
void list() |
| |
此方法将有关此线程组的信息打印到标准输出。 |
| 16 |
boolean parentOf(ThreadGroup g) |
| |
此方法测试此线程组是否为线程组参数或其祖先线程组之一。 |
| 17 |
void setDaemon(boolean daemon) |
| |
此方法更改此线程组的守护状态。 |
| 18 |
void setMaxPriority(int pri) |
| |
此方法设置组的最大优先级。 |
| 19 |
String toString() |
| |
此方法返回此线程组的字符串表示形式。 |
| 20 |
void uncaughtException(Thread t, Throwable e) |
| |
此方法由 Java 虚拟机调用,当此线程组中的线程因未捕获的异常而停止,并且线程没有安装特定的 Thread.UncaughtExceptionHandler。 |
继承的方法
此类继承以下类的方法:
Java 中 ThreadGroup 类的示例
下面的例子展示了在一个多线程程序中使用 ThreadGroup。
package com.tutorialspoint;
public class ThreadGroupDemo implements Runnable {
public static void main(String[] args) {
ThreadGroupDemo tg = new ThreadGroupDemo();
tg.func();
}
public void func() {
try {
ThreadGroup pGroup = new ThreadGroup("Parent ThreadGroup");
ThreadGroup cGroup = new ThreadGroup(pGroup, "Child ThreadGroup");
Thread t1 = new Thread(pGroup, this);
System.out.println("Starting " + t1.getName() + "...");
t1.start();
Thread t2 = new Thread(cGroup, this);
System.out.println("Starting " + t2.getName() + "...");
t2.start();
System.out.println("Active threads in \"" + pGroup.getName()
+ "\" = " + pGroup.activeCount());
t1.join();
t2.join();
} catch (InterruptedException ex) {
System.out.println(ex.toString());
}
}
public void run() {
for(int i = 0; i < 1000; i++) {
i++;
}
System.out.println(Thread.currentThread().getName() + " finished executing.");
}
}
输出
编译并运行上述程序,将产生如下结果:
Starting Thread-0...
Starting Thread-1...
Thread-0 finished executing.
Active threads in "Parent ThreadGroup" = 1
Thread-1 finished executing.