Класс 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() |
Возвращает строковое представление этих сведений о потоке. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создает и возвращает копию этого объекта. |
boolean |
equals |
Указывает, равен ли какой-либо другой объект этому объекту. |
protected void |
finalize() |
Устарело, будет удалено: этот элемент API может быть удален в будущей версии. Финализация объявлена устаревшей и подлежит удалению в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
final void |
wait() |
Заставляет текущий поток ждать до пробуждения, обычно в результате уведомления или прерывания. |
final void |
wait |
Заставляет текущий поток ждать до пробуждения, обычно в результате уведомления или прерывания, либо до истечения заданного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ждать до пробуждения, обычно в результате уведомления или прерывания, либо до истечения заданного промежутка реального времени. |
Подробное описание методов
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, нативный код. Поток считается выполняющим нативный код, если он выполняет нативный метод, выполняет нативный код, вызванный с помощью дескриптора методаRESTRICTED, полученного от нативного компоновщика, или подключен к виртуальной машине с помощью Java Native Interface и не имеет кадров Java в стеке.
Нативный код не включает служебный код виртуальной машины Java, скомпилированный код, созданный виртуальной машиной Java, или особые случаи, например поток, заблокированный на необработанном мониторе JVM TI.
- Возвращает:
-
true, если поток выполняет нативный код; в противном случае —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.