ThreadGroup类enumerate()方法
用法:
public int enumerate (Thread[] th1); public int enumerate (Thread[] th2, boolean recurr1); public int enumerate (ThreadGroup[] tg1); public int enumerate (ThreadGroup[] tg2, boolean recurr2);
- enumerate() 方法在 java.lang 包中可用。
- 枚举 (Thread[] th1) 方法用于复制线程组中的所有活动线程并放入给定的数组 Thread[] 中。
- 枚举 (Thread[] th2, boolean recurr1) 方法用于复制线程组中的所有活动线程并放入给定数组 Thread[] 但如果给定的布尔变量设置为 true 则还包括对该线程子组中每个活动线程的引用。
- 枚举 (ThreadGroup[] tg1) 方法用于复制线程组中的所有活动子组并放入给定数组 ThreadGroup[]。
- 枚举 (ThreadGroup[] tg2, boolean recurr2) 方法用于复制线程组中的所有活动子组并放置到给定数组 ThreadGroup[] 中,但如果给定的布尔变量设置为 true,则还包括对该子组中每个活动子组的引用。这些方法可能会在复制该线程组中所有活动线程时抛出异常。
SecurityException- 当不允许当前线程枚举此 ThreadGroup 时,可能会抛出此异常。 - 这些方法是非静态方法,只能通过类对象访问,如果我们尝试使用类名访问这些方法,则会出现错误。
参数:
- 在第一种情况下,
Thread[] th1
- 表示 "Thread" 类型的数组,将复制的线程集放入其中。 - 在第二种情况下,
Thread[] th1, boolean recurr1
Thread[] th1
- 与第一种情况中的定义类似。boolean recurr1
- 表示一个标志状态,表示包含线程是作为该线程组的子组的线程组。
- 在第三种情况下,
ThreadGroup[] tg1
- 表示 "ThreadGroup" 类型的数组,将复制的线程组集合放入其中。 -
- 在第四种情况下,
ThreadGroup[] tg2
- 类似于第三种情况中的定义。boolean recurr2
- 表示表示包含线程组的标志状态。
ThreadGroup[] tg2, boolean recurr2
返回值:
在第一种情况下,方法的返回类型是int
- 它返回放置到数组中的线程数的计数。
在第二种情况下,方法的返回类型是int
- 与第一种情况中的定义类似。
第三种情况,方法的返回类型是int
- 它返回放置在数组中的线程组数的计数。
第四种情况,方法的返回类型为int
- 类似于第三种情况中的定义。
例:
// Java program to demonstrate the example
// of enumerate() method of ThreadGroup()class
public class Enumerate implements Runnable {
public static void main(String[] args) {
Enumerate en = new Enumerate();
en.enumerates();
}
public void enumerates() {
try {
// Create two thread group and the named are base
// and derived
ThreadGroup base = new ThreadGroup("Base ThreadGroup");
ThreadGroup derived = new ThreadGroup(base, "Derived ThreadGroup");
// create two threads
Thread th1 = new Thread(base, this);
Thread th2 = new Thread(derived, this);
// By using getName() method is to retrieve the
// name of the thread th1
System.out.println(th1.getName() + " " + "begins.....");
// By using start() method is to start its execution
// of thread th1
th1.start();
// By using getName() method is to retrieve the
// name of the thread th2
System.out.println(th2.getName() + " " + "begins.....");
// By using start() method is to start its execution
// of thread th2
th2.start();
Thread[] t1 = new Thread[base.activeCount()];
ThreadGroup[] tg1 = new ThreadGroup[base.activeGroupCount()];
// By using enumerate() method is to put the
// copied threads in an array
System.out.println();
int cnt1 = base.enumerate(t1);
for (int i = 0; i < cnt1; ++i) {
System.out.print("enumerate(Thread[] t1):");
System.out.println(t1[i].getName() + " " + "exists");
}
System.out.println();
int cnt2 = base.enumerate(t1, true);
for (int j = 0; j < cnt2; ++j) {
System.out.print("enumerate(Thread[] t1, boolean recurr):");
System.out.println(t1[j].getName() + " " + "exists");
}
System.out.println();
int cnt3 = base.enumerate(tg1);
for (int k = 0; k < cnt3; ++k) {
System.out.print("enumerate(ThreadGroup[] tg1):");
System.out.println(tg1[k].getName() + " " + "exists");
}
System.out.println();
int cnt4 = base.enumerate(tg1, true);
for (int l = 0; l < cnt4; ++l) {
System.out.print("enumerate(ThreadGroup[] tg1, boolean recurr):");
System.out.println(tg1[l].getName() + " " + "exists");
}
// By using join() method is to wait the current
// thread till complete execution of another
// thread
th1.join();
th2.join();
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
// Override run()
public void run() {
for (int k = 0; k < 100; ++k)
++k;
System.out.println(Thread.currentThread().getName() + " " + "ends.....");
}
}
输出
Thread-0 begins..... Thread-1 begins..... Thread-0 ends..... Thread-1 ends..... enumerate(Thread[] t1):Thread-1 exists enumerate(ThreadGroup[] tg1):Derived ThreadGroup exists enumerate(ThreadGroup[] tg1, boolean recurr):Derived ThreadGroup exists
相关用法
- Java ThreadGroup getMaxPriority()用法及代码示例
- Java ThreadGroup getParent()用法及代码示例
- Java ThreadGroup getName()用法及代码示例
- Java ThreadGroup parentOf()用法及代码示例
- Java ThreadGroup interrupt()用法及代码示例
- Java ThreadGroup suspend()用法及代码示例
- Java ThreadGroup setDaemon()用法及代码示例
- Java ThreadGroup isDaemon()用法及代码示例
- Java ThreadGroup checkAccess()用法及代码示例
- Java ThreadGroup resume()用法及代码示例
- Java ThreadGroup isDestroyed()用法及代码示例
- Java ThreadGroup toString()用法及代码示例
- Java ThreadGroup destroy()用法及代码示例
- Java ThreadGroup list()用法及代码示例
- Java ThreadGroup stop()用法及代码示例
- Java ThreadGroup activeCount()用法及代码示例
- Java ThreadGroup setMaxPriority()用法及代码示例
- Java ThreadGroup activeGroupCount()用法及代码示例
- Java Thread toString()用法及代码示例
- Java Thread interrupted()用法及代码示例
注:本文由纯净天空筛选整理自Preeti Jain大神的英文原创作品 Java ThreadGroup enumerate() method with example。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。