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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。