Java - ThreadGroup 類



介紹

Java ThreadGroup 類表示一組執行緒。它還可以包含其他執行緒組。執行緒組形成一棵樹,其中除初始執行緒組外的每個執行緒組都有一個父執行緒組。

類宣告

以下是 java.lang.ThreadGroup 類的宣告:

public class ThreadGroup
   extends Object
      implements Thread.UncaughtExceptionHandler

類建構函式

序號 建構函式及描述
1

ThreadGroup(String name)

此建構函式建立一個新的執行緒組。

2

ThreadGroup(ThreadGroup parent, String name)

此建構函式建立一個新的執行緒組。

類方法

序號 方法及描述
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)

當此執行緒組中的執行緒由於未捕獲的異常而停止,並且執行緒沒有安裝特定的 Thread.UncaughtExceptionHandler 時,Java 虛擬機器將呼叫此方法。

繼承的方法

此類繼承自以下類的方法:

  • java.lang.Object

使用 ThreadGroups 對執行緒進行分組的示例

以下示例展示了在多執行緒程式中使用 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.");
   }
} 

讓我們編譯並執行上述程式,這將產生以下結果:

Starting Thread-0...
Starting Thread-1...
Thread-0 finished executing.
Active threads in "Parent ThreadGroup" = 1
Thread-1 finished executing.
廣告