|
JavaTM Platform Standard Ed. 6 | |||||||||
| 上一個類 下一個類 | 框架 無框架 所有類 | |||||||||
| 摘要: 嵌套 | 字段 | 構造方法 | 方法 | 詳細信息: 字段 | 構造方法 | 方法 | |||||||||
java.lang.management 接口 ThreadMXBean
public interface ThreadMXBean
Java 虛擬機線程系統的管理接口。
Java 虛擬機具有此接口的實現類的單一實例。實現此接口的實例是一個 MXBean,可以通過調用 ManagementFactory.getThreadMXBean() 方法或從平台 MBeanServer 方法獲得它。
在 MBeanServer 內唯一標識線程系統的 MXBean 的 ObjectName 是:
java.lang:type=Threading
線程 ID
線程 ID 是一個通過調用線程的 Thread.getId() 方法返回的 long 型正值。線程 ID 在其生存期間是唯一的。線程終止時,該線程 ID 可以被重新使用。
此接口中的某些方法將線程 ID 或線程 ID 數組作為輸入參數,並返回每個線程的信息。
線程 CPU 時間
Java 虛擬機實現可能支持測量當前線程的 CPU 時間、測量任何線程的 CPU 時間,或者有可能不測量任何線程的 CPU 時間。
isThreadCpuTimeSupported() 方法可用於確定 Java 虛擬機是否支持測量任何線程的 CPU 時間。isCurrentThreadCpuTimeSupported() 方法可用於確定 Java 虛擬機是否支持測量當前線程的 CPU 時間。支持任何線程 CPU 時間測量的 Java 虛擬機實現也支持當前線程的 CPU 時間測量。
此接口提供的 CPU 時間具有毫微秒精度,但並不具有毫微秒的准確性。
Java 虛擬機可能默認禁用 CPU 時間測量。isThreadCpuTimeEnabled() 和 setThreadCpuTimeEnabled(boolean) 方法可用於測試是否啟用 CPU 時間測量,並且可以分別啟用/禁用此支持。啟用線程 CPU 測量在某些 Java 虛擬機實現中可能開銷很大。
線程爭用監視
某些 Java 虛擬機可能支持線程爭用監視。當啟用線程爭用監視時,將收集由於同步而受阻塞的線程累積時間和等待通知的線程累積時間,並在 ThreadInfo 對象中返回它們。
isThreadContentionMonitoringSupported() 方法可用於確定 Java 虛擬機是否支持線程爭用監視。默認情況下,線程爭用監視是禁用的。setThreadContentionMonitoringEnabled(boolean) 方法可用於啟用線程爭用監視。
同步信息和死鎖檢測
一些 Java 虛擬機可以支持使用對象監視器和使用可擁有同步器的監視。getThreadInfo(long[], boolean, boolean) 和 dumpAllThreads(boolean, boolean) 方法可以用來獲取線程堆棧跟蹤和同步信息,這些信息包括在獲得線程時被哪一個鎖阻塞或者正在等待哪一個鎖,以及線程當前擁有哪些鎖。
ThreadMXBean 接口提供 findMonitorDeadlockedThreads() 和 findDeadlockedThreads() 方法,這些方法用於在運行的應用程序中查找死鎖。
- 從以下版本開始:
- 1.5
- 另請參見:
- JMX Specification., 訪問 MXBeans 的方式
| 方法摘要 | |
|---|---|
ThreadInfo[] |
dumpAllThreads(boolean lockedMonitors, boolean lockedSynchronizers) 返回所有活動線程的線程信息,並帶有堆棧跟蹤和同步信息。 |
long[] |
findDeadlockedThreads() 查找因為等待獲得對象監視器或可擁有同步器而處於死鎖狀態的線程循環。 |
long[] |
findMonitorDeadlockedThreads() 找到處於死鎖狀態(等待獲取對象監視器)的線程的周期。 |
long[] |
getAllThreadIds() 返回活動線程 ID。 |
long |
getCurrentThreadCpuTime() 返回當前線程的總 CPU 時間(以毫微秒為單位)。 |
long |
getCurrentThreadUserTime() 返回當前線程在用戶模式中執行的 CPU 時間(以毫微秒為單位)。 |
int |
getDaemonThreadCount() 返回活動守護線程的當前數目。 |
int |
getPeakThreadCount() 返回自從 Java 虛擬機啟動或峰值重置以來峰值活動線程計數。 |
int |
getThreadCount() 返回活動線程的當前數目,包括守護線程和非守護線程。 |
long |
getThreadCpuTime(long id) 返回指定 ID 的線程的總 CPU 時間(以毫微秒為單位)。 |
ThreadInfo |
getThreadInfo(long id) 返回指定 id 的不具有堆棧跟蹤的線程的線程信息。 |
ThreadInfo[] |
getThreadInfo(long[] ids) 返回其 ID 在輸出數組 ids 中的每個線程的線程信息,這些線程不具有堆棧跟蹤。 |
ThreadInfo[] |
getThreadInfo(long[] ids, boolean lockedMonitors, boolean lockedSynchronizers) 返回每個線程的線程信息,線程 ID 位於輸入數組 ids 中,帶有堆棧跟蹤和同步信息。 |
ThreadInfo[] |
getThreadInfo(long[] ids, int maxDepth) 返回其 ID 在輸入數組 ids 中的每個線程的線程信息,並帶有指定堆棧追蹤元素數的堆棧追蹤。 |
ThreadInfo |
getThreadInfo(long id, int maxDepth) 返回指定 id 的線程的線程信息,並帶有指定堆棧追蹤元素數的堆棧追蹤。 |
long |
getThreadUserTime(long id) 返回指定 ID 的線程在用戶模式中執行的 CPU 時間(以毫微秒為單位)。 |
long |
getTotalStartedThreadCount() 返回自從 Java 虛擬機啟動以來創建和啟動的線程總數目。 |
boolean |
isCurrentThreadCpuTimeSupported() 測試 Java 虛擬機是否支持當前線程的 CPU 時間測量。 |
boolean |
isObjectMonitorUsageSupported() 測試 Java 虛擬機是否支持使用對象監視器的監視。 |
boolean |
isSynchronizerUsageSupported() 測試 Java 虛擬機是否支持使用 可擁有同步器的監視。 |
boolean |
isThreadContentionMonitoringEnabled() 測試是否啟用了線程爭用監視。 |
boolean |
isThreadContentionMonitoringSupported() 測試 Java 虛擬機是否支持線程爭用監視。 |
boolean |
isThreadCpuTimeEnabled() 測試是否啟用了線程 CPU 時間測量。 |
boolean |
isThreadCpuTimeSupported() 測試 Java 虛擬機實現是否支持任何線程的 CPU 時間測量。 |
void |
resetPeakThreadCount() 將峰值線程計數重置為當前活動線程的數量。 |
void |
setThreadContentionMonitoringEnabled(boolean enable) 啟用或禁用線程爭用監視。 |
void |
setThreadCpuTimeEnabled(boolean enable) 啟用或禁用線程 CPU 時間測量。 |
| 方法詳細信息 |
|---|
getThreadCount
int getThreadCount()
-
返回活動線程的當前數目,包括守護線程和非守護線程。
-
- 返回:
- 活動線程的當前數目。
getPeakThreadCount
int getPeakThreadCount()
-
返回自從 Java 虛擬機啟動或峰值重置以來峰值活動線程計數。
-
- 返回:
- 峰值活動線程計數。
getTotalStartedThreadCount
long getTotalStartedThreadCount()
-
返回自從 Java 虛擬機啟動以來創建和啟動的線程總數目。
-
- 返回:
- 已啟動的線程的總數。
getDaemonThreadCount
int getDaemonThreadCount()
-
返回活動守護線程的當前數目。
-
- 返回:
- 活動守護線程的當前數目。
getAllThreadIds
long[] getAllThreadIds()
-
返回活動線程 ID。在返回的數組中包含的某些線程可能在此方法返回時已經終止。
-
- 返回:
- long 數組,每個成員都是線程 ID。
- 拋出:
-
SecurityException- 如果存在安全管理器,且調用方不具有 ManagementPermission("monitor")。
getThreadInfo
ThreadInfo getThreadInfo(long id)
-
返回指定
id 的不具有堆棧跟蹤的線程的線程信息。此方法等效於調用:
getThreadInfo(id, 0);此方法返回表示指定 ID 的線程的線程信息的 ThreadInfo 對象。返回的 ThreadInfo 對象中的堆棧跟蹤、鎖定的監視器、鎖定的同步器將為空。 如果給定 ID 的線程沒有處於活動狀態,或不存在,則此方法將返回 null。如果線程已經啟動且尚未終止,則該線程處於活動狀態。
MBeanServer 訪問: ThreadInfo 的映射類型為 CompositeData,並具有
ThreadInfo.from方法指定的那些屬性。 -
- 參數:
-
id- 線程的線程 ID。必須為正數。 - 返回:
-
給定 ID 的線程的
ThreadInfo對象,不帶堆棧跟蹤、鎖定的監視器和同步器信息;如果給定 ID 的線程沒有處於活動狀態,或不存在,則返回 null。 - 拋出:
-
IllegalArgumentException- 如果 id <= 0。 -
SecurityException- 如果存在安全管理器,且調用方不具有 ManagementPermission("monitor")。
getThreadInfo
ThreadInfo[] getThreadInfo(long[] ids)
-
返回其 ID 在輸出數組
ids 中的每個線程的線程信息,這些線程不具有堆棧跟蹤。此方法等效於調用:
getThreadInfo(ids, 0);此方法返回 ThreadInfo 對象數組。每個 ThreadInfo 對象中的堆棧跟蹤、鎖定的監視器、鎖定的同步器將為空。 如果給定 ID 的線程沒有處於活動狀態,或不存在,則返回數組中的對應元素將包含 null。如果線程已經啟動且尚未終止,則該線程處於活動狀態。
MBeanServer 訪問: ThreadInfo 的映射類型為 CompositeData,具有
ThreadInfo.from方法指定的那些屬性。 -
- 參數:
-
ids- 線程 ID 數組。 - 返回:
-
一個
ThreadInfo對象的數組,每個數組元素均包含關於線程的信息,該線程 ID 在 ID 輸入數組的對應元素中,不帶堆棧跟蹤、鎖定的監視器和同步器信息。 - 拋出:
-
IllegalArgumentException- 如果輸入數組 ids 中的任何元素 <= 0。 -
SecurityException- 如果存在安全管理器,且調用方不具有 ManagementPermission("monitor")。
getThreadInfo
ThreadInfo getThreadInfo(long id, int maxDepth)
-
返回指定
id 的線程的線程信息,並帶有指定堆棧追蹤元素數的堆棧追蹤。maxDepth 參數指示可從堆棧跟蹤獲取的
StackTraceElement的最大數目。如果 maxDepth == Integer.MAX_VALUE,則將轉儲線程的整個堆棧跟蹤。如果 maxDepth == 0,則不轉儲線程的任何堆棧跟蹤。此方法不獲取線程的鎖定的監視器和鎖定同步器。當 Java 虛擬機沒有關於線程的堆棧跟蹤信息或 maxDepth == 0 時,ThreadInfo 對象中的堆棧跟蹤將為空的 StackTraceElement 數組。
如果給定 ID 的線程沒有處於活動狀態,或不存在,則此方法將返回 null。如果線程已經啟動且尚未終止,則該線程處於活動狀態。
MBeanServer 訪問: ThreadInfo 的映射類型為 CompositeData,具有
ThreadInfo.from方法指定的那些屬性。 -
- 參數:
-
id- 線程的線程 ID。必須為正數。 -
maxDepth- 要轉儲的堆棧跟蹤中的最大項數。Integer.MAX_VALUE 可用於請求將整個堆棧轉儲。 - 返回:
-
給定 ID 的線程的
ThreadInfo,不帶鎖定的監視器和同步器信息。如果給定 ID 的線程沒有處於活動狀態,或不存在,則返回 null。 - 拋出:
-
IllegalArgumentException- 如果 id <= 0。 -
IllegalArgumentException- 如果 maxDepth 為負數。 -
SecurityException- 如果存在安全管理器,且調用方不具有 ManagementPermission("monitor")。
getThreadInfo
ThreadInfo[] getThreadInfo(long[] ids, int maxDepth)
-
返回其 ID 在輸入數組
ids 中的每個線程的線程信息,並帶有指定堆棧追蹤元素數的堆棧追蹤。maxDepth 參數指示可從堆棧跟蹤獲取的
StackTraceElement的最大數目。如果 maxDepth == Integer.MAX_VALUE,則將轉儲線程的整個堆棧跟蹤。如果 maxDepth == 0,則不轉儲線程的任何堆棧跟蹤。此方法不獲取線程的鎖定的監視器和鎖定同步器。當 Java 虛擬機沒有關於線程的堆棧跟蹤信息或 maxDepth == 0 時,ThreadInfo 對象中的堆棧跟蹤將為空的 StackTraceElement 數組。
此方法返回一個 ThreadInfo 對象的數組,其每個成員均為關於線程的線程信息,索引順序與 ids 數組中索引相同。如果給定 ID 的線程沒有處於活動狀態,或不存在,則返回數組中的對應元素將設置為 null。如果線程已經啟動且尚未終止,則該線程處於活動狀態。
MBeanServer 訪問: ThreadInfo 的映射類型為 CompositeData,具有
ThreadInfo.from方法指定的那些屬性。 -
- 參數:
-
ids- 線程 ID 數組 -
maxDepth- 要轉儲的堆棧跟蹤中的最大項數。Integer.MAX_VALUE 可用於請求將整個堆棧轉儲。 - 返回:
-
一個
ThreadInfo對象組成的數組,每個數組元素均包含關於線程的信息,該線程 ID 在 ID 輸入數組的對應元素中,不帶鎖定的監視器和同步器信息。 - 拋出:
-
IllegalArgumentException- 如果 maxDepth 為負數。 -
IllegalArgumentException- 如果輸入數組 ids 中的任何元素 <= 0。 -
SecurityException- 如果存在安全管理器,且調用方不具有 ManagementPermission("monitor")。
isThreadContentionMonitoringSupported
boolean isThreadContentionMonitoringSupported()
-
測試 Java 虛擬機是否支持線程爭用監視。
-
- 返回:
- 如果 Java 虛擬機支持線程爭用監視,則返回 true;否則返回 false。
isThreadContentionMonitoringEnabled
boolean isThreadContentionMonitoringEnabled()
-
測試是否啟用了線程爭用監視。
-
- 返回:
- 如果啟用了線程爭用監視,則返回 true;否則返回 false。
- 拋出:
-
UnsupportedOperationException- 如果 Java 虛擬機不支持線程爭用監視。 - 另請參見:
-
isThreadContentionMonitoringSupported()
setThreadContentionMonitoringEnabled
void setThreadContentionMonitoringEnabled(boolean enable)
-
啟用或禁用線程爭用監視。默認情況下,線程爭用監視是被禁用的。
-
- 參數:
-
enable- 為 true 則啟用;為 false 則禁用。 - 拋出:
-
UnsupportedOperationException- 如果 Java 虛擬機不支持線程爭用監視。 -
SecurityException- 如果存在安全管理器,且調用方不具有 ManagementPermission("control")。 - 另請參見:
-
isThreadContentionMonitoringSupported()
getCurrentThreadCpuTime
long getCurrentThreadCpuTime()
-
返回當前線程的總 CPU 時間(以毫微秒為單位)。返回的值具有毫微秒的精度,但不具有毫微秒的准確度。如果實現對用戶模式時間和系統模式時間加以區別,則返回的 CPU 時間為當前線程在用戶模式或系統模式中執行的時間總量。
這是一個便於局部管理的方法,等效於調用:
getThreadCpuTime(Thread.currentThread().getId()); -
- 返回:
- 如果啟用了 CPU 時間測量,則返回當前線程的總 CPU 時間;否則返回 -1。
- 拋出:
-
UnsupportedOperationException- 如果 Java 虛擬機不支持當前線程的 CPU 時間測量。 - 另請參見:
-
getCurrentThreadUserTime(),isCurrentThreadCpuTimeSupported(),isThreadCpuTimeEnabled(),setThreadCpuTimeEnabled(boolean)
getCurrentThreadUserTime
long getCurrentThreadUserTime()
-
返回當前線程在用戶模式中執行的 CPU 時間(以毫微秒為單位)。返回的具有毫微秒的精度,但不具有毫微秒的准確度。
這是一個便於局部管理的方法,等效於調用:
getThreadUserTime(Thread.currentThread().getId()); -
- 返回:
- 如果啟用了 CPU 時間測量,則返回當前線程的用戶級 CPU 時間;否則返回 -1。
- 拋出:
-
UnsupportedOperationException- 如果 Java 虛擬機不支持當前線程的 CPU 時間測量。 - 另請參見:
-
getCurrentThreadCpuTime(),isCurrentThreadCpuTimeSupported(),isThreadCpuTimeEnabled(),setThreadCpuTimeEnabled(boolean)
getThreadCpuTime
long getThreadCpuTime(long id)
-
返回指定 ID 的線程的總 CPU 時間(以毫微秒為單位)。返回的值具有毫微秒的精度,但不具有毫微秒的准確度。如果實現對用戶模式時間和系統模式時間加以區別,返回的 CPU 時間則為線程在用戶模式或系統模式中執行的時間總量。
如果指定 ID 的線程沒有處於活動狀態,或不存在,則此方法將返回 -1。如果 CPU 時間測量,此方法將返回 -1。如果線程已經啟動且尚未終止,則該線程處於活動狀態。
如果線程啟動后啟用了 CPU 時間測量,Java 虛擬機實現可能選擇任何時間作為啟動 CPU 時間測量的時間,包括啟用此功能的時間。
-
- 參數:
-
id- 線程的線程 ID - 返回:
- 如果指定的 ID 存在,線程為活動狀態,且啟用了 CPU 時間測量,則返回指定 ID 的線程的總 CPU 時間;否則返回 -1。
- 拋出:
-
IllegalArgumentException- 如果 id <= 0。 -
UnsupportedOperationException- 如果 Java 虛擬機不支持其他線程的 CPU 時間測定。 - 另請參見:
-
getThreadUserTime(long),isThreadCpuTimeSupported(),isThreadCpuTimeEnabled(),setThreadCpuTimeEnabled(boolean)
getThreadUserTime
long getThreadUserTime(long id)
-
返回指定 ID 的線程在用戶模式中執行的 CPU 時間(以毫微秒為單位)。返回的值具有毫微秒的精度,但未必具有毫微秒的准確度。
如果指定 ID 的線程沒有處於活動狀態,或不存在,則此方法將返回 -1。如果禁用 CPU 時間測量,此方法將返回 -1。如果線程已經啟動且尚未終止,則該線程處於活動狀態。
如果線程啟動后啟用了 CPU 時間測量,Java 虛擬機實現可能選擇任何時間作為啟動 CPU 時間測量的時間,包括啟用此功能的時間。
-
- 參數:
-
id- 線程的線程 ID - 返回:
- 如果指定的 ID 存在,線程為活動狀態,且啟用了 CPU 時間測量,則返回指定 ID 的線程的用戶級 CPU 時間;否則返回 -1。
- 拋出:
-
IllegalArgumentException- 如果 id <= 0。 -
UnsupportedOperationException- 如果 Java 虛擬機不支持其他線程的 CPU 時間測定。 - 另請參見:
-
getThreadCpuTime(long),isThreadCpuTimeSupported(),isThreadCpuTimeEnabled(),setThreadCpuTimeEnabled(boolean)
isThreadCpuTimeSupported
boolean isThreadCpuTimeSupported()
-
測試 Java 虛擬機實現是否支持任何線程的 CPU 時間測量。支持任何線程 CPU 時間測定的 Java 虛擬機實現也支持當前線程的 CPU 時間測定。
-
- 返回:
- 如果 Java 虛擬機支持任何線程的 CPU 時間測量,則返回 true;否則返回 false。
isCurrentThreadCpuTimeSupported
boolean isCurrentThreadCpuTimeSupported()
-
測試 Java 虛擬機是否支持當前線程的 CPU 時間測量。如果
isThreadCpuTimeSupported()返回 true,此方法將返回 true。 -
- 返回:
- 如果 Java 虛擬機支持當前線程的 CPU 時間測量,則返回 true;否則返回 false。
isThreadCpuTimeEnabled
boolean isThreadCpuTimeEnabled()
-
測試是否啟用了線程 CPU 時間測量。
-
- 返回:
- 如果啟用了線程 CPU 時間測量,則返回 true;否則返回 false。
- 拋出:
-
UnsupportedOperationException- 如果 Java 虛擬機不支持其他線程或當前線程的 CPU 時間測量。 - 另請參見:
-
isThreadCpuTimeSupported(),isCurrentThreadCpuTimeSupported()
setThreadCpuTimeEnabled
void setThreadCpuTimeEnabled(boolean enable)
-
啟用或禁用線程 CPU 時間測量。此默認值與平台有關。
-
- 參數:
-
enable- 為 true 則啟用;為 false 則禁用。 - 拋出:
-
UnsupportedOperationException- 如果 Java 虛擬機不支持任何線程或當前線程的 CPU 時間測量。 -
SecurityException- 如果存在安全管理器,且調用方不具有 ManagementPermission("control")。 - 另請參見:
-
isThreadCpuTimeSupported(),isCurrentThreadCpuTimeSupported()
findMonitorDeadlockedThreads
long[] findMonitorDeadlockedThreads()
-
找到處於死鎖狀態(等待獲取對象監視器)的線程的周期。即線程被阻塞,等待進入同步塊或在
Object.wait調用后等待重新進入同步塊,此時每個線程擁有一個監視器,且同時試圖獲取已經由周期中的另一個線程擁有的另一個監視器。更正式地說,如果線程屬於某個周期,處於“等待已被占用的對象監視器”的關系中,則該線程處於監視器死鎖 狀態。在最簡單的情況下,線程 A 被阻塞,在等待線程 B 擁有的監視器,而線程 B 也被阻塞,在等待線程 A 擁有的監視器。
此方法設計用於進行故障排除,但不適合進行同步控制。它可能成為開銷很大的操作。
此方法只查找涉及對象監視器的死鎖。要查找涉及對象監視器和可擁有同步器的死鎖,應該使用
findDeadlockedThreads方法。 -
- 返回:
- 處於監視器死鎖狀態的線程(如果有)的 ID 數組;否則返回 null。
- 拋出:
-
SecurityException- 如果存在安全管理器,且調用方不具有 ManagementPermission("monitor")。 - 另請參見:
-
findDeadlockedThreads()
resetPeakThreadCount
void resetPeakThreadCount()
-
將峰值線程計數重置為當前活動線程的數量。
-
- 拋出:
-
SecurityException- 如果存在安全管理器,且調用方不具有 ManagementPermission(("control")。 - 另請參見:
-
getPeakThreadCount(),getThreadCount()
findDeadlockedThreads
long[] findDeadlockedThreads()
-
查找因為等待獲得對象監視器或
可擁有同步器而處於死鎖狀態的線程循環。如果每個線程擁有一個鎖,當試圖從另一個處於循環中的線程獲取其持有的鎖時,線程會在循環中處於
死鎖
狀態,等待這兩種鎖。
此方法設計用於故障排除,不用於異常控制。它是一個開銷很大的操作。
-
- 返回:
- 線程的 ID 數組,該線程處於死鎖狀態,等待對象監視器或可擁有同步器(如果有);否則返回 null。
- 拋出:
-
SecurityException- 如果安全管理器存在,且調用者沒有 ManagementPermission("monitor")。 -
UnsupportedOperationException- 如果 Java 虛擬機不支持使用可擁有同步器的監視。 - 從以下版本開始:
- 1.6
- 另請參見:
-
isSynchronizerUsageSupported(),findMonitorDeadlockedThreads()
isObjectMonitorUsageSupported
boolean isObjectMonitorUsageSupported()
-
測試 Java 虛擬機是否支持使用對象監視器的監視。
-
- 返回:
- 如果 Java 虛擬機支持使用對象監視器的監視,則返回 true;否則返回 false。
- 從以下版本開始:
- 1.6
- 另請參見:
-
dumpAllThreads(boolean, boolean)
isSynchronizerUsageSupported
boolean isSynchronizerUsageSupported()
-
測試 Java 虛擬機是否支持使用
可擁有同步器的監視。
-
- 返回:
- 如果 Java 虛擬機支持使用可擁有同步器的監視,則返回 true;否則返回false。
- 從以下版本開始:
- 1.6
- 另請參見:
-
dumpAllThreads(boolean, boolean)
getThreadInfo
ThreadInfo[] getThreadInfo(long[] ids, boolean lockedMonitors, boolean lockedSynchronizers)
-
返回每個線程的線程信息,線程 ID 位於輸入數組
ids 中,帶有堆棧跟蹤和同步信息。
此方法獲取每個線程的線程信息快照,包括:
- 整個堆棧跟蹤
- 線程當前鎖定的對象監視器(如果 lockedMonitors 為 true)
- 線程當前鎖定的 可擁有同步器(如果 lockedSynchronizers 為 true)
此方法返回 ThreadInfo 對象數組,每個數組元素是關於線程的線程信息,該線程帶有與 ids 數組中相同的索引。如果給定 ID 的線程沒有處於活動狀態,或不存在,則返回數組中的對應元素將被設置為 null。如果一個線程已經啟動且尚未關閉,則稱該線程是活動的。
如果線程沒有鎖定任何對象監視器或 lockedMonitors 為 false,那么返回的 ThreadInfo 對象將有一個空 MonitorInfo 數組。類似地,如果線程沒有鎖定任何同步器或 lockedSynchronizers 為 false,那么返回的 ThreadInfo 對象將有一個空 LockInfo 數組。
當 lockedMonitors 和 lockedSynchronizers 參數均為 false 時,它等效於調用:
getThreadInfo(ids, Integer.MAX_VALUE)此方法設計用於故障排除,不用於異常控制。它是一個開銷很大的操作。
MBeanServer 訪問: ThreadInfo 的映射類型為 CompositeData,並帶有
ThreadInfo.from方法指定的屬性。 -
- 參數:
-
ids- 線程 ID 數組。 -
lockedMonitors- 如果為 true,則獲取所有鎖定的監視器。 -
lockedSynchronizers- 如果為 true,則獲取所有鎖定的可擁有同步器。 - 返回:
-
ThreadInfo對象數組,每個數組元素包含有關線程的信息,該線程的 ID 在 ID 輸入數組的對應元素中。 - 拋出:
-
SecurityException- 如果安全管理器存在,且調用者沒有 ManagementPermission("monitor")。 -
UnsupportedOperationException- - 從以下版本開始:
- 1.6
- 另請參見:
-
isObjectMonitorUsageSupported(),isSynchronizerUsageSupported()
dumpAllThreads
ThreadInfo[] dumpAllThreads(boolean lockedMonitors, boolean lockedSynchronizers)
-
返回所有活動線程的線程信息,並帶有堆棧跟蹤和同步信息。 當此方法返回時,返回數組中包含的一些線程可能已經終止。
此方法返回
ThreadInfo對象數組,ThreadInfo 對象是使用getThreadInfo(long[], boolean, boolean)方法指定的。 -
- 參數:
-
lockedMonitors- 如果為 true,則轉儲所有鎖定的監視器。 -
lockedSynchronizers- 如果為 true,則轉儲所有鎖定的可擁有同步器。 - 返回:
-
所有活動線程的
ThreadInfo數組。 - 拋出:
-
SecurityException- 如果安全管理器存在,且調用者沒有 ManagementPermission("monitor")。 -
UnsupportedOperationException- - 從以下版本開始:
- 1.6
- 另請參見:
-
isObjectMonitorUsageSupported(),isSynchronizerUsageSupported()
|
JavaTM Platform Standard Ed. 6 | |||||||||
| 上一個類 下一個類 | 框架 無框架 所有類 | |||||||||
| 摘要: 嵌套 | 字段 | 構造方法 | 方法 | 詳細信息: 字段 | 構造方法 | 方法 | |||||||||
提交錯誤或意見 有關更多的 API 參考資料和開發人員文檔,請參閱 Java SE 開發人員文檔。該文檔包含更詳細的、面向開發人員的描述,以及總體概述、術語定義、使用技巧和工作代碼示例。
版權所有 2007 Sun Microsystems, Inc. 保留所有權利。 請遵守許可證條款。另請參閱文檔重新分發政策。
