Класс 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 , код в формате native с помощью 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.- Возвращает:
-
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 если был вызван 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, 2021, 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/17/docs/api/java.management/java/lang/management/ThreadInfo.html