鴻蒙OS ThreadGroup

2022-05-26 17:43 更新

ThreadGroup

java.lang.Object

|---java.lang.ThreadGroup

public class ThreadGroup
extends Object
implements Thread.UncaughtExceptionHandler

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

允許線程訪問(wèn)有關(guān)其自己的線程組的信息,但不能訪問(wèn)有關(guān)其線程組的父線程組或任何其他線程組的信息。

構(gòu)造函數(shù)摘要

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

方法總結(jié)

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

構(gòu)造函數(shù)詳細(xì)信息

ThreadGroup

public ThreadGroup(String name)

構(gòu)造一個(gè)新的線程組。 這個(gè)新組的父組是當(dāng)前運(yùn)行線程的線程組。

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

參數(shù):

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

Throws:

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

ThreadGroup

public ThreadGroup(ThreadGroup parent, String name)

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

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

參數(shù):

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

Throws:

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

方法詳情

getName

public final String getName()

返回此線程組的名稱。

返回:

此線程組的名稱。

getParent

public final ThreadGroup getParent()

返回此線程組的父級(jí)。

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

返回:

此線程組的父級(jí)。 頂級(jí)線程組是唯一其父級(jí)為空的線程組。

Throws:

Throw名稱 Throw描述
SecurityException 如果當(dāng)前線程不能修改這個(gè)線程組。

getMaxPriority

public final int getMaxPriority()

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

返回:

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

isDaemon

public final boolean isDaemon()

測(cè)試此線程組是否為守護(hù)線程組。 守護(hù)線程組在其最后一個(gè)線程停止或其最后一個(gè)線程組被銷(xiāo)毀時(shí)自動(dòng)銷(xiāo)毀。

返回:

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

isDestroyed

public boolean isDestroyed()

測(cè)試此線程組是否已被銷(xiāo)毀。

返回:

如果此對(duì)象被銷(xiāo)毀,則為 true

setDaemon

public final void setDaemon(boolean daemon)

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

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

守護(hù)線程組在其最后一個(gè)線程停止或其最后一個(gè)線程組被銷(xiāo)毀時(shí)自動(dòng)銷(xiāo)毀。

參數(shù):

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

Throws:

Throw名稱 Throw描述
SecurityException 如果當(dāng)前線程不能修改這個(gè)線程組。

setMaxPriority

public final void setMaxPriority(int pri)

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

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

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

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

參數(shù):

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

Throws:

Throw名稱 Throw描述
SecurityException 如果當(dāng)前線程不能修改這個(gè)線程組。

parentOf

public final boolean parentOf(ThreadGroup g)

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

參數(shù):

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

返回:

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

checkAccess

public final void checkAccess()

確定當(dāng)前運(yùn)行的線程是否有權(quán)修改此線程組。

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

Throws:

Throw名稱 Throw描述
SecurityException 如果當(dāng)前線程不允許訪問(wèn)這個(gè)線程組。

activeCount

public int activeCount()

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

返回的值只是一個(gè)估計(jì)值,因?yàn)樵诖朔椒ū闅v內(nèi)部數(shù)據(jù)結(jié)構(gòu)時(shí)線程數(shù)可能會(huì)動(dòng)態(tài)變化,并且可能會(huì)受到某些系統(tǒng)線程的存在的影響。 此方法主要用于調(diào)試和監(jiān)視目的。

返回:

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

enumerate

public int enumerate(Thread[] list)

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

此方法的調(diào)用與調(diào)用的行為方式完全相同

enumerate(list, true)

參數(shù):

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

返回:

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

Throws:

Throw名稱 Throw描述
SecurityException if checkAccess判斷當(dāng)前線程不能訪問(wèn)這個(gè)線程組

enumerate

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

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

應(yīng)用程序可能會(huì)使用 activeCount 方法來(lái)估計(jì)數(shù)組應(yīng)該有多大,但是如果數(shù)組太短而無(wú)法容納所有線程,那么額外的線程將被忽略。 如果獲取此線程組中的每個(gè)活動(dòng)線程至關(guān)重要,則調(diào)用者應(yīng)驗(yàn)證返回的 int 值是否嚴(yán)格小于列表的長(zhǎng)度。

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

參數(shù):

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

返回:

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

Throws:

Throw名稱 Throw描述
SecurityException if checkAccess判斷當(dāng)前線程不能訪問(wèn)這個(gè)線程組

activeGroupCount

public int activeGroupCount()

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

返回的值只是一個(gè)估計(jì)值,因?yàn)樵诖朔椒ū闅v內(nèi)部數(shù)據(jù)結(jié)構(gòu)時(shí)線程組的數(shù)量可能會(huì)動(dòng)態(tài)變化。 此方法主要用于調(diào)試和監(jiān)視目的。

返回:

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

enumerate

public int enumerate(ThreadGroup[] list)

將對(duì)該線程組及其子組中每個(gè)活動(dòng)子組的引用復(fù)制到指定的數(shù)組中。

此方法的調(diào)用與調(diào)用的行為方式完全相同

enumerate(list, true)

參數(shù):

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

返回:

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

Throws:

Throw名稱 Throw描述
SecurityException if checkAccess判斷當(dāng)前線程不能訪問(wèn)這個(gè)線程組

enumerate

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

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

應(yīng)用程序可能會(huì)使用 activeGroupCount 方法來(lái)估計(jì)數(shù)組應(yīng)該有多大,但是如果數(shù)組太短而無(wú)法容納所有線程組,那么額外的線程組將被忽略。 如果獲取此線程組中的每個(gè)活動(dòng)子組至關(guān)重要,則調(diào)用者應(yīng)驗(yàn)證返回的 int 值是否嚴(yán)格小于列表的長(zhǎng)度。

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

參數(shù):

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

返回:

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

Throws:

Throw名稱 Throw描述
SecurityException if checkAccess判斷當(dāng)前線程不能訪問(wèn)這個(gè)線程組

stop

@Deprecated public final void stop()

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

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

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

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

Throws:

Throw名稱 Throw描述
SecurityException 如果不允許當(dāng)前線程訪問(wèn)該線程組或線程組中的任何線程。

interrupt

public final void interrupt()

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

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

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

Throws:

Throw名稱 Throw描述
SecurityException 如果不允許當(dāng)前線程訪問(wèn)該線程組或線程組中的任何線程。

suspend

@Deprecated public final void suspend()

已棄用。 這種方法本質(zhì)上容易死鎖。

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

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

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

Throws:

Throw名稱 Throw描述
SecurityException 如果不允許當(dāng)前線程訪問(wèn)該線程組或線程組中的任何線程。

resume

@Deprecated public final void resume()

已棄用。 此方法僅與 Thread.suspend 和 ThreadGroup.suspend 一起使用,這兩種方法都已被棄用,因?yàn)樗鼈儽旧砭腿菀姿梨i。

恢復(fù)此線程組中的所有線程。

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

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

Throws:

Throw名稱 Throw描述
SecurityException 如果不允許當(dāng)前線程訪問(wèn)該線程組或線程組中的任何線程。

destroy

public final void destroy()

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

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

Throws:

Throw名稱 Throw描述
IllegalThreadStateException 如果線程組不為空或線程組已被銷(xiāo)毀。
SecurityException 如果當(dāng)前線程不能修改這個(gè)線程組。

list

public void list()

將有關(guān)此線程組的信息打印到標(biāo)準(zhǔn)輸出。 此方法僅對(duì)調(diào)試有用。

uncaughtException

public void uncaughtException(Thread t, Throwable e)

當(dāng)此線程組中的線程由于未捕獲的異常而停止并且該線程沒(méi)有安裝特定的 Thread.UncaughtExceptionHandler 時(shí),由 Java 虛擬機(jī)調(diào)用。

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

  • 如果該線程組有一個(gè)父線程組,則使用相同的兩個(gè)參數(shù)調(diào)用該父線程組的 uncaughtException 方法。
  • 否則,此方法檢查是否安裝了 Thread#getDefaultUncaughtExceptionHandler,如果是,則使用相同的兩個(gè)參數(shù)調(diào)用其 uncaughtException 方法。
  • 否則,此方法確定 Throwable 參數(shù)是否是 ThreadDeath 的實(shí)例。如果是這樣,沒(méi)有什么特別的。否則,一條包含線程名稱的消息(從線程的 Thread#getName 方法返回)和使用 Throwable 的 Throwable#printStackTrace 方法的堆?;厮輰⒋蛴〉?System#err。

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

指定者:

接口 Thread.UncaughtExceptionHandler 中的 uncaughtException

參數(shù):

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

allowThreadSuspension

@Deprecated public boolean allowThreadSuspension(boolean b)

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

VM 使用它來(lái)控制 lowmem 隱式掛起。

參數(shù):

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

返回:

true on success

toString

public String toString()

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

覆蓋:

類 Object 中的 toString

返回:

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

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)