Java 教程

Java 控制語句

面向物件程式設計

Java 內建類

Java 檔案處理

Java 錯誤和異常

Java 多執行緒

Java 同步

Java 網路程式設計

Java 集合

Java 介面

Java 資料結構

Java 集合演算法

高階 Java

Java 雜項

Java API 和框架

Java 類引用

Java 有用資源

Java - ThreadGroup 類



ThreadGroup 類

Java 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)

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

繼承的方法

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

  • java.lang.Object

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 {     
         // 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.
廣告