鴻蒙OS ThreadGroup

2022-05-26 17:43 更新

ThreadGroup

java.lang.Object

|---java.lang.ThreadGroup

public class ThreadGroup
extends Object
implements Thread.UncaughtExceptionHandler

一個線程組代表一組線程。 此外,一個線程組還可以包括其他線程組。 線程組形成一棵樹,其中除了初始線程組之外的每個線程組都有一個父級。

允許線程訪問有關其自己的線程組的信息,但不能訪問有關其線程組的父線程組或任何其他線程組的信息。

構造函數(shù)摘要

構造函數(shù) 描述
ThreadGroup(String name) 構造一個新的線程組。
ThreadGroup(ThreadGroup parent, String name) 創(chuàng)建一個新的線程組。

方法總結

修飾符和類型 方法 描述
int activeCount() 返回此線程組及其子組中活動線程數(shù)的估計值。
int activeGroupCount() 返回此線程組及其子組中活動組數(shù)的估計值。
boolean allowThreadSuspension(boolean b) 已棄用。 此調用的定義取決于已棄用的suspend()。 此外,從未指定此調用的行為。
void checkAccess() 確定當前運行的線程是否有權修改此線程組。
void destroy() 銷毀此線程組及其所有子組。
int enumerate(Thread[] list) 將此線程組及其子組中的每個活動線程復制到指定的數(shù)組中。
int enumerate(Thread[] list, boolean recurse) 將此線程組中的每個活動線程復制到指定的數(shù)組中。
int enumerate(ThreadGroup[] list) 將對該線程組及其子組中每個活動子組的引用復制到指定的數(shù)組中。
int enumerate(ThreadGroup[] list, boolean recurse) 將對該線程組中每個活動子組的引用復制到指定的數(shù)組中。
int getMaxPriority() 返回此線程組的最大優(yōu)先級。
String getName() 返回此線程組的名稱。
ThreadGroup getParent() 返回此線程組的父級。
void interrupt() 中斷此線程組中的所有線程。
boolean isDaemon() 測試此線程組是否為守護線程組。
boolean isDestroyed() 測試此線程組是否已被銷毀。
void list() 將有關此線程組的信息打印到標準輸出。
boolean parentOf(ThreadGroup g) 測試此線程組是線程組參數(shù)還是它的祖先線程組之一。
void resume() 已棄用。 此方法僅與 Thread.suspend 和 ThreadGroup.suspend 一起使用,這兩種方法都已被棄用,因為它們本身就容易死鎖。
void setDaemon(boolean daemon) 更改此線程組的守護程序狀態(tài)。
void setMaxPriority(int pri) 設置組的最大優(yōu)先級。
void stop() 已棄用。 這種方法本質上是不安全的。
void suspend() 已棄用。 這種方法本質上容易死鎖。
String toString() 返回此線程組的字符串表示形式。
void uncaughtException(Thread t, Throwable e) 當此線程組中的線程由于未捕獲的異常而停止并且該線程沒有安裝特定的 Thread.UncaughtExceptionHandler 時,由 Java 虛擬機調用。
從類 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

構造函數(shù)詳細信息

ThreadGroup

public ThreadGroup(String name)

構造一個新的線程組。 這個新組的父組是當前運行線程的線程組。

調用父線程組的 checkAccess 方法,不帶參數(shù); 這可能會導致安全異常。

參數(shù):

參數(shù)名稱 參數(shù)描述
name 新線程組的名稱。

Throws:

Throw名稱 Throw描述
SecurityException 如果當前線程無法在指定線程組中創(chuàng)建線程。

ThreadGroup

public ThreadGroup(ThreadGroup parent, String name)

創(chuàng)建一個新的線程組。 這個新組的父級是指定的線程組。

調用父線程組的 checkAccess 方法,不帶參數(shù); 這可能會導致安全異常。

參數(shù):

參數(shù)名稱 參數(shù)描述
parent 父線程組。
name 新線程組的名稱。

Throws:

Throw名稱 Throw描述
NullPointerException 如果線程組參數(shù)為空。
SecurityException 如果當前線程無法在指定線程組中創(chuàng)建線程。

方法詳情

getName

public final String getName()

返回此線程組的名稱。

返回:

此線程組的名稱。

getParent

public final ThreadGroup getParent()

返回此線程組的父級。

首先,如果parent不為null,則調用父線程組的checkAccess方法,不帶參數(shù); 這可能會導致安全異常。

返回:

此線程組的父級。 頂級線程組是唯一其父級為空的線程組。

Throws:

Throw名稱 Throw描述
SecurityException 如果當前線程不能修改這個線程組。

getMaxPriority

public final int getMaxPriority()

返回此線程組的最大優(yōu)先級。 屬于該組的線程的優(yōu)先級不能高于最大優(yōu)先級。

返回:

此線程組中的線程可以擁有的最大優(yōu)先級。

isDaemon

public final boolean isDaemon()

測試此線程組是否為守護線程組。 守護線程組在其最后一個線程停止或其最后一個線程組被銷毀時自動銷毀。

返回:

如果此線程組是守護線程組,則為 true; 否則為假。

isDestroyed

public boolean isDestroyed()

測試此線程組是否已被銷毀。

返回:

如果此對象被銷毀,則為 true

setDaemon

public final void setDaemon(boolean daemon)

更改此線程組的守護程序狀態(tài)。

首先,調用該線程組的 checkAccess 方法,不帶參數(shù); 這可能會導致安全異常。

守護線程組在其最后一個線程停止或其最后一個線程組被銷毀時自動銷毀。

參數(shù):

參數(shù)名稱 參數(shù)描述
daemon 如果為true,則將此線程組標記為守護線程組; 否則,將此線程組標記為正常。

Throws:

Throw名稱 Throw描述
SecurityException 如果當前線程不能修改這個線程組。

setMaxPriority

public final void setMaxPriority(int pri)

設置組的最大優(yōu)先級。 線程組中已經具有較高優(yōu)先級的線程不受影響。

首先,調用該線程組的 checkAccess 方法,不帶參數(shù); 這可能會導致安全異常。

如果 pri 參數(shù)小于 Thread#MIN_PRIORITY 或大于 Thread#MAX_PRIORITY,則組的最大優(yōu)先級保持不變。

否則,此 ThreadGroup 對象的優(yōu)先級設置為指定的 pri 和此線程組的父級允許的最大優(yōu)先級中的較小者。 (如果這個線程組是系統(tǒng)線程組,它沒有父線程,那么它的最大優(yōu)先級簡單地設置為 pri。)然后這個方法被遞歸調用,以 pri 作為它的參數(shù),對于屬于這個線程組的每個線程組 .

參數(shù):

參數(shù)名稱 參數(shù)描述
pri 線程組的新優(yōu)先級。

Throws:

Throw名稱 Throw描述
SecurityException 如果當前線程不能修改這個線程組。

parentOf

public final boolean parentOf(ThreadGroup g)

測試此線程組是線程組參數(shù)還是它的祖先線程組之一。

參數(shù):

參數(shù)名稱 參數(shù)描述
g 一個線程組。

返回:

如果此線程組是線程組參數(shù)或其祖先線程組之一,則為 true; 否則為假。

checkAccess

public final void checkAccess()

確定當前運行的線程是否有權修改此線程組。

如果有一個安全管理器,它的 checkAccess 方法會以這個線程組作為它的參數(shù)被調用。 這可能會導致拋出 SecurityException。

Throws:

Throw名稱 Throw描述
SecurityException 如果當前線程不允許訪問這個線程組。

activeCount

public int activeCount()

返回此線程組及其子組中活動線程數(shù)的估計值。 遞歸迭代此線程組中的所有子組。

返回的值只是一個估計值,因為在此方法遍歷內部數(shù)據(jù)結構時線程數(shù)可能會動態(tài)變化,并且可能會受到某些系統(tǒng)線程的存在的影響。 此方法主要用于調試和監(jiān)視目的。

返回:

此線程組和以該線程組為祖先的任何其他線程組中的活動線程數(shù)的估計

enumerate

public int enumerate(Thread[] list)

將此線程組及其子組中的每個活動線程復制到指定的數(shù)組中。

此方法的調用與調用的行為方式完全相同

enumerate(list, true)

參數(shù):

參數(shù)名稱 參數(shù)描述
list 將線程列表放入其中的數(shù)組

返回:

放入數(shù)組的線程數(shù)

Throws:

Throw名稱 Throw描述
SecurityException if checkAccess判斷當前線程不能訪問這個線程組

enumerate

public int enumerate(Thread[] list, boolean recurse)

將此線程組中的每個活動線程復制到指定的數(shù)組中。 如果 recurse 為真,則此方法遞歸枚舉此線程組的所有子組,并且還包括對這些子組中每個活動線程的引用。 如果數(shù)組太短而無法容納所有線程,則會默默忽略多余的線程。

應用程序可能會使用 activeCount 方法來估計數(shù)組應該有多大,但是如果數(shù)組太短而無法容納所有線程,那么額外的線程將被忽略。 如果獲取此線程組中的每個活動線程至關重要,則調用者應驗證返回的 int 值是否嚴格小于列表的長度。

由于此方法中固有的競爭條件,建議僅將該方法用于調試和監(jiān)視目的。

參數(shù):

參數(shù)名稱 參數(shù)描述
list 將線程列表放入其中的數(shù)組
recurse 如果為true,遞歸枚舉該線程組的所有子組

返回:

放入數(shù)組的線程數(shù)

Throws:

Throw名稱 Throw描述
SecurityException if checkAccess判斷當前線程不能訪問這個線程組

activeGroupCount

public int activeGroupCount()

返回此線程組及其子組中活動組數(shù)的估計值。 遞歸迭代此線程組中的所有子組。

返回的值只是一個估計值,因為在此方法遍歷內部數(shù)據(jù)結構時線程組的數(shù)量可能會動態(tài)變化。 此方法主要用于調試和監(jiān)視目的。

返回:

以此線程組為祖先的活動線程組的數(shù)量

enumerate

public int enumerate(ThreadGroup[] list)

將對該線程組及其子組中每個活動子組的引用復制到指定的數(shù)組中。

此方法的調用與調用的行為方式完全相同

enumerate(list, true)

參數(shù):

參數(shù)名稱 參數(shù)描述
list 將線程組列表放入其中的數(shù)組

返回:

放入數(shù)組的線程組數(shù)

Throws:

Throw名稱 Throw描述
SecurityException if checkAccess判斷當前線程不能訪問這個線程組

enumerate

public int enumerate(ThreadGroup[] list, boolean recurse)

將對該線程組中每個活動子組的引用復制到指定的數(shù)組中。 如果 recurse 為真,則此方法遞歸枚舉此線程組的所有子組,并且還包括對這些子組中每個活動線程組的引用。

應用程序可能會使用 activeGroupCount 方法來估計數(shù)組應該有多大,但是如果數(shù)組太短而無法容納所有線程組,那么額外的線程組將被忽略。 如果獲取此線程組中的每個活動子組至關重要,則調用者應驗證返回的 int 值是否嚴格小于列表的長度。

由于此方法中固有的競爭條件,建議僅將該方法用于調試和監(jiān)視目的。

參數(shù):

參數(shù)名稱 參數(shù)描述
list 將線程組列表放入其中的數(shù)組
recurse 如果為true,遞歸枚舉所有子組

返回:

放入數(shù)組的線程組數(shù)

Throws:

Throw名稱 Throw描述
SecurityException if checkAccess判斷當前線程不能訪問這個線程組

stop

@Deprecated public final void stop()

已棄用。 這種方法本質上是不安全的。

停止此線程組中的所有線程。

首先,調用該線程組的 checkAccess 方法,不帶參數(shù); 這可能會導致安全異常。

然后,此方法在此線程組及其所有子組中的所有線程上調用 stop 方法。

Throws:

Throw名稱 Throw描述
SecurityException 如果不允許當前線程訪問該線程組或線程組中的任何線程。

interrupt

public final void interrupt()

中斷此線程組中的所有線程。

首先,調用該線程組的 checkAccess 方法,不帶參數(shù); 這可能會導致安全異常。

然后,此方法在此線程組及其所有子組中的所有線程上調用中斷方法。

Throws:

Throw名稱 Throw描述
SecurityException 如果不允許當前線程訪問該線程組或線程組中的任何線程。

suspend

@Deprecated public final void suspend()

已棄用。 這種方法本質上容易死鎖。

掛起該線程組中的所有線程。

首先,調用該線程組的 checkAccess 方法,不帶參數(shù); 這可能會導致安全異常。

然后,此方法在此線程組及其所有子組中的所有線程上調用掛起方法。

Throws:

Throw名稱 Throw描述
SecurityException 如果不允許當前線程訪問該線程組或線程組中的任何線程。

resume

@Deprecated public final void resume()

已棄用。 此方法僅與 Thread.suspend 和 ThreadGroup.suspend 一起使用,這兩種方法都已被棄用,因為它們本身就容易死鎖。

恢復此線程組中的所有線程。

首先,調用該線程組的 checkAccess 方法,不帶參數(shù); 這可能會導致安全異常。

然后,此方法在此線程組及其所有子組中的所有線程上調用 resume 方法。

Throws:

Throw名稱 Throw描述
SecurityException 如果不允許當前線程訪問該線程組或線程組中的任何線程。

destroy

public final void destroy()

銷毀此線程組及其所有子組。 此線程組必須為空,表示該線程組中的所有線程都已停止。

首先,調用該線程組的 checkAccess 方法,不帶參數(shù); 這可能會導致安全異常。

Throws:

Throw名稱 Throw描述
IllegalThreadStateException 如果線程組不為空或線程組已被銷毀。
SecurityException 如果當前線程不能修改這個線程組。

list

public void list()

將有關此線程組的信息打印到標準輸出。 此方法僅對調試有用。

uncaughtException

public void uncaughtException(Thread t, Throwable e)

當此線程組中的線程由于未捕獲的異常而停止并且該線程沒有安裝特定的 Thread.UncaughtExceptionHandler 時,由 Java 虛擬機調用。

ThreadGroup 的 uncaughtException 方法執(zhí)行以下操作:

  • 如果該線程組有一個父線程組,則使用相同的兩個參數(shù)調用該父線程組的 uncaughtException 方法。
  • 否則,此方法檢查是否安裝了 Thread#getDefaultUncaughtExceptionHandler,如果是,則使用相同的兩個參數(shù)調用其 uncaughtException 方法。
  • 否則,此方法確定 Throwable 參數(shù)是否是 ThreadDeath 的實例。如果是這樣,沒有什么特別的。否則,一條包含線程名稱的消息(從線程的 Thread#getName 方法返回)和使用 Throwable 的 Throwable#printStackTrace 方法的堆棧回溯將打印到 System#err。

應用程序可以在 ThreadGroup 的子類中覆蓋此方法,以提供對未捕獲異常的替代處理。

指定者:

接口 Thread.UncaughtExceptionHandler 中的 uncaughtException

參數(shù):

參數(shù)名稱 參數(shù)描述
t 即將退出的線程。
e 未捕獲的異常。

allowThreadSuspension

@Deprecated public boolean allowThreadSuspension(boolean b)

已棄用。 此調用的定義取決于已棄用的suspend()。 此外,從未指定此調用的行為。

VM 使用它來控制 lowmem 隱式掛起。

參數(shù):

參數(shù)名稱 參數(shù)描述
b 允許或禁止暫停的布爾值

返回:

true on success

toString

public String toString()

返回此線程組的字符串表示形式。

覆蓋:

類 Object 中的 toString

返回:

此線程組的字符串表示形式。

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號