Java 简明教程
Java - ThreadGroup Class
ThreadGroup Class Declaration
以下是对 java.lang.ThreadGroup 类的声明:
public class ThreadGroup
extends Object
implements Thread.UncaughtExceptionHandler
ThreadGroup Class Constructors
Sr.No. |
Constructor & Description |
1 |
ThreadGroup(String name) 用于构造新的线程组。 |
2 |
ThreadGroup(ThreadGroup parent, String name) 用于创建新的线程组。 |
ThreadGroup Class Methods
Sr.No. |
Method & Description |
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 时。 |
Example of ThreadGroup Class in Java
以下示例展示了在多线程程序中使用 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 {
// create a parent ThreadGroup
ThreadGroup pGroup = new ThreadGroup("Parent ThreadGroup");
// create a child ThreadGroup for parent ThreadGroup
ThreadGroup cGroup = new ThreadGroup(pGroup, "Child ThreadGroup");
// create a thread
Thread t1 = new Thread(pGroup, this);
System.out.println("Starting " + t1.getName() + "...");
t1.start();
// create another thread
Thread t2 = new Thread(cGroup, this);
System.out.println("Starting " + t2.getName() + "...");
t2.start();
// display the number of active threads
System.out.println("Active threads in \"" + pGroup.getName()
+ "\" = " + pGroup.activeCount());
// block until the other threads finish
t1.join();
t2.join();
} catch (InterruptedException ex) {
System.out.println(ex.toString());
}
}
// implements run()
public void run() {
for(int i = 0;i < 1000;i++) {
i++;
}
System.out.println(Thread.currentThread().getName() + " finished executing.");
}
}