Класс ThreadInfo
public class ThreadInfo extends Object
ThreadInfo содержит информацию о потоке, включая: Общая информация о потоке
- Идентификатор потока.
- Имя потока.
- Является ли поток демоническим.
Информация об выполнении
- Состояние потока.
- Объект, на котором заблокирован поток из-за:
- ожидания входа в блок синхронизации/метод, или
- ожидания уведомления в методе
Object.wait, или - ожидания из-за вызова
LockSupport.park.
- Идентификатор потока, владеющего объектом, на котором заблокирован поток.
- Стек вызовов потока.
- Список мониторов объектов, заблокированных потоком.
- Список владеемых синхронизаторов, заблокированных потоком.
- Приоритет потока
Статистическая информация о синхронизации
- Количество раз, когда поток блокировался для синхронизации или ожидал уведомления.
- Накопленное время блокировки потока для синхронизации или ожидания уведомления с момента включения
thread contention monitoring. Некоторые реализации Java виртуальной машины могут не поддерживать это. МетодThreadMXBean.isThreadContentionMonitoringSupported()может использоваться для определения поддержки этого в Java виртуальной машине.
Этот класс информации о потоке предназначен для мониторинга системы, а не для управления синхронизацией.
Сопоставление MXBean
ThreadInfo сопоставляется с CompositeData с атрибутами, как указано в методе from.- Since:
- 1.5
- См. также:
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
static ThreadInfo |
from |
Возвращает объект ThreadInfo, представленный заданным CompositeData. |
long |
getBlockedCount() |
Возвращает общее количество раз, когда поток, связанный с этим ThreadInfo заблокировался для входа или повторного входа в монитор. |
long |
getBlockedTime() |
Возвращает приблизительное накопленное время (в миллисекундах), которое поток, связанный с этим ThreadInfo провел в блокировке для входа или повторного входа в монитор с момента активации мониторинга конкуренции потоков. |
MonitorInfo[] |
getLockedMonitors() |
Возвращает массив объектов MonitorInfo, каждый из которых представляет собой монитор объекта, текущий заблокированный потоком, связанным с этим ThreadInfo. |
LockInfo[] |
getLockedSynchronizers() |
Возвращает массив объектов LockInfo, каждый из которых представляет собой владеемый синхронизатор, текущий заблокированный потоком, связанным с этим ThreadInfo. |
LockInfo |
getLockInfo() |
Возвращает LockInfo объекта, для которого поток, связанный с этим ThreadInfo ожидает блокировки. |
String |
getLockName() |
Возвращает string representation объекта, для которого поток, связанный с этим ThreadInfo ожидает блокировки. |
long |
getLockOwnerId() |
Возвращает идентификатор потока, который владеет объектом, для которого поток, связанный с этим ThreadInfo ожидает блокировки. |
String |
getLockOwnerName() |
Возвращает имя потока, который владеет объектом, для которого поток, связанный с этим ThreadInfo ожидает блокировки. |
int |
getPriority() |
Возвращает приоритет потока потока, связанного с этим ThreadInfo. |
StackTraceElement[] |
getStackTrace() |
Возвращает стек вызовов потока, связанного с этим ThreadInfo. |
long |
getThreadId() |
Возвращает идентификатор потока, связанного с этим ThreadInfo. |
String |
getThreadName() |
Возвращает имя потока, связанного с этим ThreadInfo. |
Thread.State |
getThreadState() |
Возвращает состояние потока, связанного с этим ThreadInfo. |
long |
getWaitedCount() |
Возвращает общее количество раз, когда поток, связанный с этим ThreadInfo ожидал уведомления. |
long |
getWaitedTime() |
Возвращает приблизительное накопленное время (в миллисекундах), которое поток, связанный с этим ThreadInfo ожидал уведомления с момента активации мониторинга конкуренции потоков. |
boolean |
isDaemon() |
Проверяет, является ли поток, связанный с этим ThreadInfo, демоническим потоком. |
boolean |
isInNative() |
Проверяет, выполняет ли поток, связанный с этим ThreadInfo, код нативных функций через Java Native Interface (JNI). |
boolean |
isSuspended() |
Проверяет, приостановлен ли поток, связанный с этим ThreadInfo. |
String |
toString() |
Возвращает строковое представление этой информации о потоке. |
Подробное описание методов
getThreadId
public long getThreadId()
ThreadInfo.- Возвращает:
- идентификатор связанного потока.
getThreadName
public String getThreadName()
ThreadInfo.- Возвращает:
- имя связанного потока.
getThreadState
public Thread.State getThreadState()
ThreadInfo.- Возвращает:
- состояние связанного потока.
getBlockedTime
public long getBlockedTime()
ThreadInfo заблокировал для входа или повторного входа в монитор, с момента активации мониторинга конкуренции потоков. То есть, общее накопленное время, в течение которого поток находился в состоянии BLOCKED, с момента последней активации мониторинга конкуренции потоков. Этот метод возвращает -1 если мониторинг конкуренции потоков отключён. Виртуальная машина Java может измерять время с помощью таймера высокой точности. Эта статистика сбрасывается при повторной активации мониторинга конкуренции потоков.
- Возвращает:
- приблизительное накопленное время в миллисекундах, в течение которого поток находился в состоянии
BLOCKED;-1если мониторинг конкуренции потоков отключён. - Исключения:
-
UnsupportedOperationException- если виртуальная машина Java не поддерживает эту операцию. - См. также:
getBlockedCount
public long getBlockedCount()
ThreadInfo блокировался для входа или повторного входа в монитор. То есть, количество раз, когда поток находился в состоянии BLOCKED.- Возвращает:
- общее количество раз, когда поток переходил в состояние
BLOCKED.
getWaitedTime
public long getWaitedTime()
ThreadInfo ожидал уведомления с момента активации мониторинга конкуренции потоков. То есть, общее накопленное время, которое поток находился в состоянии WAITING или TIMED_WAITING, с момента активации мониторинга конкуренции потоков. Этот метод возвращает -1 если мониторинг конкуренции потоков отключён. Виртуальная машина Java может измерять время с помощью таймера высокой точности. Эта статистика сбрасывается при повторной активации мониторинга конкуренции потоков.
- Возвращает:
- приблизительное накопленное время в миллисекундах, в течение которого поток находился в состоянии
WAITINGилиTIMED_WAITING;-1если мониторинг конкуренции потоков отключён. - Исключения:
-
UnsupportedOperationException- если виртуальная машина Java не поддерживает эту операцию. - См. также:
getWaitedCount
public long getWaitedCount()
ThreadInfo ожидал уведомления. То есть, количество раз, когда поток находился в состоянии WAITING или TIMED_WAITING.- Возвращает:
- общее количество раз, когда поток находился в состоянии
WAITINGилиTIMED_WAITING.
getLockInfo
public LockInfo getLockInfo()
LockInfo объекта, из-за которого поток, связанный с этим ThreadInfo заблокирован, ожидая. Поток может быть заблокирован, ожидая одного из следующих: - приобретения монитора объекта для входа или повторного входа в блок/метод синхронизации.
Поток находится в состоянииBLOCKED, ожидая входа вsynchronizedвыражение или метод. - уведомления от другого потока об объекте монитора.
Поток находится в состоянииWAITINGилиTIMED_WAITINGиз-за вызова методаObject.wait. - объекта синхронизации, ответственного за приостановку потока.
Поток находится в состоянииWAITINGилиTIMED_WAITINGиз-за вызова методаLockSupport.park. Объект синхронизации — это объект, возвращаемый методомLockSupport.getBlocker. Обычно это владеющий синхронизатор илиCondition.
Этот метод возвращает null если поток не находится ни в одном из вышеперечисленных состояний.
- Возвращает:
-
информацию об объекте, из-за которого поток заблокирован, если таковой имеется;
nullв противном случае. - С тех пор:
- 1.6
getLockName
public String getLockName()
string representation объекта, из-за которого поток, связанный с этим ThreadInfo заблокирован, ожидая. Этот метод эквивалентен вызову: getLockInfo().toString()
Этот метод вернёт null если этот поток не заблокирован в ожидании какого-либо объекта, или если объект не принадлежит ни одному потоку.
- Возвращает:
- строковое представление объекта, по которому заблокирован поток, если таковой имеется;
nullв противном случае. - См. также:
getLockOwnerId
public long getLockOwnerId()
ThreadInfo заблокирован, ожидая. Этот метод вернёт -1 если этот поток не заблокирован в ожидании какого-либо объекта или если объект не принадлежит ни одному потоку.- Возвращает:
- идентификатор потока владельца объекта, по которому заблокирован этот поток;
-1если этот поток не заблокирован или если объект никому не принадлежит. - См. также:
getLockOwnerName
public String getLockOwnerName()
ThreadInfo заблокирован, ожидая. Этот метод вернёт null если этот поток не заблокирован в ожидании какого-либо объекта или если объект не принадлежит ни одному потоку.- Возвращает:
- имя потока-владельца объекта, по которому заблокирован этот поток;
nullесли этот поток не заблокирован или если объект никому не принадлежит. - См. также:
getStackTrace
public StackTraceElement[] getStackTrace()
ThreadInfo. Если для этой информации о потоке не запрашивался стек вызовов, этот метод вернёт массив нулевой длины. Если возвращаемый массив имеет ненулевую длину, то первый элемент массива представляет собой вершину стека, то есть самый последний вызов метода в последовательности. Последний элемент массива представляет собой основание стека, то есть наименее последний вызов метода в последовательности. В некоторых случаях виртуальная машина Java может опустить один или несколько кадров стека из стека вызовов. В крайнем случае, виртуальная машина, у которой нет информации о стеке вызовов для потока, связанного с этим ThreadInfo разрешается вернуть массив нулевой длины из этого метода.
- Возвращает:
- массив объектов
StackTraceElementпотока.
isSuspended
public boolean isSuspended()
ThreadInfo. Этот метод возвращает true если был вызван Thread.suspend().- Возвращает:
-
trueесли поток приостановлен;falseв противном случае.
isInNative
public boolean isInNative()
ThreadInfo, код нативных функций через Java Native Interface (JNI). Код нативных функций JNI не включает поддержку виртуальной машины или скомпилированный нативный код, сгенерированный виртуальной машиной.- Возвращает:
-
trueесли поток выполняет нативный код;falseв противном случае.
isDaemon
public boolean isDaemon()
ThreadInfo, фоновым потоком (фоновый поток).- Возвращает:
-
trueесли поток является фоновым потоком,falseв противном случае. - С:
- 9
- См. также:
getPriority
public int getPriority()
ThreadInfo. - Возвращает:
- Приоритет потока, связанного с этим
ThreadInfo. - С:
- 9
toString
public String toString()
- Переопределяет:
-
toStringв классеObject - Возвращает:
- строковое представление информации о потоке.
from
public static ThreadInfo from(CompositeData cd)
ThreadInfo, представленный заданным CompositeData . CompositeData, представляющий ThreadInfo версии N, должен содержать все атрибуты, определенные в версиях ≤ N, если не указано иное. То же правило применяется к составному типу данного CompositeData и транзитивно к атрибутам, тип которых (тип) или тип компонентов (тип компонента) является CompositeType. CompositeData , представляющий ThreadInfo версии N, содержит атрибут "stackTrace" и атрибут "lockedMonitors" , представляющий массив StackTraceElement и массив MonitorInfo соответственно, и их типы соответствуют версии N. Атрибут "lockedStackFrame" в составном типе MonitorInfo должен представлять StackTraceElement той же версии N. В противном случае этот метод вызовет IllegalArgumentException.
| Имя атрибута | Тип | С |
|---|---|---|
| threadId | java.lang.Long | 5 |
| threadName | java.lang.String | 5 |
| threadState | java.lang.String | 5 |
| suspended | java.lang.Boolean | 5 |
| inNative | java.lang.Boolean | 5 |
| blockedCount | java.lang.Long | 5 |
| blockedTime | java.lang.Long | 5 |
| waitedCount | java.lang.Long | 5 |
| waitedTime | java.lang.Long | 5 |
| lockName | java.lang.String | 5 |
| lockOwnerId | java.lang.Long | 5 |
| lockOwnerName | java.lang.String | 5 |
| стек вызовов |
javax.management.openmbean.CompositeData[], каждый элемент - CompositeData , представляющий StackTraceElement в соответствии с ниже. | 5 |
| lockInfo |
javax.management.openmbean.CompositeData - сопоставленный тип для LockInfo, как указано в методе LockInfo.from(javax.management.openmbean.CompositeData). Если данного | 6 |
| lockedMonitors |
javax.management.openmbean.CompositeData[] , тип элементов которого соответствует сопоставленному типу MonitorInfo, как указано в методе MonitorInfo.from. Если данного | 6 |
| lockedSynchronizers |
javax.management.openmbean.CompositeData[] , тип элементов которого соответствует сопоставленному типу LockInfo, как указано в методе LockInfo.from(javax.management.openmbean.CompositeData). Если данного | 6 |
| daemon |
java.lang.Boolean Если данного | 9 |
| priority |
java.lang.Integer Если данного | 9 |
CompositeData , представляющий StackTraceElement версии N, должен содержать все атрибуты, определенные в версиях ≤ N, если не указано иное. | Имя атрибута | Тип | С |
|---|---|---|
| classLoaderName | java.lang.String | 9 |
| moduleName | java.lang.String | 9 |
| moduleVersion | java.lang.String | 9 |
| className | java.lang.String | 5 |
| methodName | java.lang.String | 5 |
| fileName | java.lang.String | 5 |
| lineNumber | java.lang.Integer | 5 |
| nativeMethod | java.lang.Boolean | 5 |
- Параметры:
-
cd-CompositeData, представляющийThreadInfo - Возвращает:
- объект
ThreadInfo, представленныйcdеслиcdнеnull;nullв противном случае. - Исключения:
-
IllegalArgumentException- если заданныйcdи его составной тип не содержат всех атрибутов, определенных дляThreadInfoконкретной версии среды выполнения.
getLockedMonitors
public MonitorInfo[] getLockedMonitors()
MonitorInfo, каждый из которых представляет монитор объекта, заблокированный потоком, связанным с этим ThreadInfo. Если для этой информации о потоке не запрашивался заблокированный монитор или поток не заблокировал монитор, этот метод вернет массив нулевой длины.- Возвращает:
- массив объектов
MonitorInfo, представляющих заблокированные мониторы объекта потоком. - С:
- 1.6
getLockedSynchronizers
public LockInfo[] getLockedSynchronizers()
LockInfo, каждый из которых представляет владеемый синхронизатор, заблокированный потоком, связанным с этим ThreadInfo. Если для этой информации о потоке не запрашивался заблокированный синхронизатор или поток не заблокировал синхронизатор, этот метод вернет массив нулевой длины.- Возвращает:
- массив объектов
LockInfo, представляющих владельцы синхронизаторов, заблокированные потоком. - С:
- 1.6
© 1993, 2023, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/21/docs/api/java.management/java/lang/management/ThreadInfo.html