Класс ThreadInfo
public class ThreadInfo extends Object
ThreadInfo содержит сведения о потоке, в том числе: Общие сведения о потоке
- Идентификатор потока.
- Имя потока.
- Является ли поток потоком-демоном
Сведения о выполнении
- Состояние потока.
- Объект, на котором поток заблокирован по одной из следующих причин:
- ожидание входа в синхронизированный блок или метод либо
- ожидание уведомления в методе
Object.waitлибо - парковка в результате вызова
LockSupport.park.
- Идентификатор потока, которому принадлежит объект, на котором заблокирован поток.
- Трассировка стека потока.
- Список мониторов объектов, захваченных потоком.
- Список синхронизаторов с владельцем, захваченных потоком.
- Приоритет потока
Статистика синхронизации
- Количество блокировок потока при синхронизации или ожиданий уведомления.
- Суммарное прошедшее время, в течение которого поток был заблокирован при синхронизации или ожидал уведомления с момента включения
thread contention monitoring. Некоторые реализации виртуальной машины Java могут не поддерживать эту возможность. Чтобы определить, поддерживает ли ее виртуальная машина Java, можно использовать методThreadMXBean.isThreadContentionMonitoringSupported().
Этот класс сведений о потоке предназначен для мониторинга системы, а не для управления синхронизацией.
Сопоставление MXBean
ThreadInfo сопоставляется с CompositeData с атрибутами, указанными в методе from.- С версии:
- 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, машинный код. |
boolean |
isSuspended() |
Проверяет, приостановлен ли поток, связанный с этим ThreadInfo. |
String |
toString() |
Возвращает строковое представление сведений об этом потоке. |
Подробное описание методов
getThreadId
public long getThreadId()
ThreadInfo.- Возвращает:
- идентификатор связанного потока.
getThreadName
public String getThreadName()
ThreadInfo.- Возвращает:
- имя связанного потока.
getThreadState
public Thread.State getThreadState()
ThreadInfo.- Возвращает:
-
Thread.Stateсвязанного потока.
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, если поток не находится ни в одном из перечисленных выше состояний.
- Возвращает:
-
LockInfoобъекта, которого ожидает поток, если такой объект есть; в противном случае —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, если поток приостановлен; в противном случае —false. - Внешние спецификации
isInNative
public boolean isInNative()
ThreadInfo, native-код. Поток считается выполняющим native-код, если он выполняет native-метод, выполняет native-код, вызванный с помощью дескриптора методаОГРАНИЧЕННЫЙ, полученного от средства связывания с native-кодом, или присоединен к виртуальной машине с помощью Java Native Interface посредством присоединения, не имея кадров Java в стеке.
Native-код не включает служебный код виртуальной машины Java, скомпилированный код, созданный виртуальной машиной Java, и особые случаи, например поток, заблокированный на необработанном мониторе JVM TI.
- Возвращает:
-
true, если поток выполняет native-код; в противном случае —false.
isDaemon
public boolean isDaemon()
ThreadInfo, потоком-демоном.- Возвращает:
-
true, если поток является потоком-демоном; в противном случае —false. - Начиная с версии:
- 9
- См. также:
getPriority
public int getPriority()
ThreadInfo.- Возвращает:
- Приоритет потока, связанного с этим
ThreadInfo. - Начиная с версии:
- 9
toString
public String toString()
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 |
| stackTrace |
javax.management.openmbean.CompositeData[], каждый элемент — это CompositeData, представляющий StackTraceElement, как указано ниже. | 5 |
| lockInfo |
javax.management.openmbean.CompositeData — отображаемый тип для LockInfo, как указано в методе LockInfo.from(CompositeData). Если заданный объект | 6 |
| lockedMonitors |
javax.management.openmbean.CompositeData[], тип элементов которого является отображаемым типом для MonitorInfo, как указано в методе MonitorInfo.from. Если заданный объект | 6 |
| lockedSynchronizers |
javax.management.openmbean.CompositeData[], тип элементов которого является отображаемым типом для LockInfo, как указано в методе LockInfo.from(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, 2025, 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/25/docs/api/java.management/java/lang/management/ThreadInfo.html