Spec-Zone.ru › OpenJDK 25

Класс ThreadInfo

java.lang.Object
java.lang.management.ThreadInfo
public class ThreadInfo extends Object
Информация о потоке. ThreadInfo содержит сведения о потоке, в том числе:

Общие сведения о потоке

  • Идентификатор потока.
  • Имя потока.
  • Является ли поток потоком-демоном

Сведения о выполнении

  • Состояние потока.
  • Объект, на котором поток заблокирован по одной из следующих причин:
    • ожидание входа в синхронизированный блок или метод либо
    • ожидание уведомления в методе Object.wait либо
    • парковка в результате вызова LockSupport.park.
  • Идентификатор потока, которому принадлежит объект, на котором заблокирован поток.
  • Трассировка стека потока.
  • Список мониторов объектов, захваченных потоком.
  • Список синхронизаторов с владельцем, захваченных потоком.
  • Приоритет потока

Статистика синхронизации

  • Количество блокировок потока при синхронизации или ожиданий уведомления.
  • Суммарное прошедшее время, в течение которого поток был заблокирован при синхронизации или ожидал уведомления с момента включения thread contention monitoring. Некоторые реализации виртуальной машины Java могут не поддерживать эту возможность. Чтобы определить, поддерживает ли ее виртуальная машина Java, можно использовать метод ThreadMXBean.isThreadContentionMonitoringSupported().

Этот класс сведений о потоке предназначен для мониторинга системы, а не для управления синхронизацией.

Сопоставление MXBean

ThreadInfo сопоставляется с CompositeData с атрибутами, указанными в методе from.
С версии:
1.5
См. также:
  • ThreadMXBean.getThreadInfo(long)
  • ThreadMXBean.dumpAllThreads(boolean, boolean)

Краткое описание методов

Модификатор и тип Метод Описание
static ThreadInfo from(CompositeData cd)
Возвращает объект 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

Подробное описание методов

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 не поддерживает эту операцию.
См. также:
  • ThreadMXBean.isThreadContentionMonitoringSupported()
  • ThreadMXBean.setThreadContentionMonitoringEnabled(boolean)

getBlockedCount

public long getBlockedCount()
Возвращает общее количество случаев, когда поток, связанный с этим ThreadInfo, блокировался при попытке войти в монитор или повторно войти в него. То есть количество случаев, когда поток находился в состоянии BLOCKED.
Возвращает:
общее количество случаев, когда поток находился в состоянии BLOCKED.

getWaitedTime

public long getWaitedTime()
Возвращает приблизительное суммарное прошедшее время (в миллисекундах), в течение которого поток, связанный с этим ThreadInfo, ожидал уведомления с момента включения мониторинга конкуренции потоков. То есть суммарное время, в течение которого поток находился в состоянии WAITING или TIMED_WAITING с момента включения мониторинга конкуренции потоков. Этот метод возвращает -1, если мониторинг конкуренции потоков отключен.

Виртуальная машина Java может измерять время с помощью таймера высокого разрешения. Это статистическое значение сбрасывается при повторном включении мониторинга конкуренции потоков.

Возвращает:
приблизительное суммарное прошедшее время в миллисекундах, в течение которого поток находился в состоянии WAITING или TIMED_WAITING; -1, если мониторинг конкуренции потоков отключен.
Вызывает:
UnsupportedOperationException — если виртуальная машина Java не поддерживает эту операцию.
См. также:
  • ThreadMXBean.isThreadContentionMonitoringSupported()
  • ThreadMXBean.setThreadContentionMonitoringEnabled(boolean)

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.
См. также:
  • getLockInfo()

getLockOwnerId

public long getLockOwnerId()
Возвращает идентификатор потока, которому принадлежит объект, блокировки которого ожидает поток, связанный с этим ThreadInfo. Этот метод возвращает -1, если данный поток не ожидает блокировки какого-либо объекта или если объект не принадлежит ни одному потоку.
Возвращает:
идентификатор потока-владельца объекта, блокировки которого ожидает данный поток; -1, если данный поток не заблокирован или если объект не принадлежит ни одному потоку.
См. также:
  • getLockInfo()

getLockOwnerName

public String getLockOwnerName()
Возвращает имя потока, которому принадлежит объект, блокировки которого ожидает поток, связанный с этим ThreadInfo. Этот метод возвращает null, если данный поток не ожидает блокировки какого-либо объекта или если объект не принадлежит ни одному потоку.
Возвращает:
имя потока, которому принадлежит объект, блокировки которого ожидает данный поток; null, если данный поток не заблокирован или если объект не принадлежит ни одному потоку.
См. также:
  • getLockInfo()

getStackTrace

public StackTraceElement[] getStackTrace()
Возвращает трассировку стека потока, связанного с этим ThreadInfo. Если для этих сведений о потоке трассировка стека не запрашивалась, этот метод возвращает массив нулевой длины. Если возвращенный массив не пуст, его первый элемент представляет вершину стека, то есть последний вызванный метод в последовательности. Последний элемент массива представляет дно стека, то есть метод, вызванный раньше всех в последовательности.

В некоторых обстоятельствах отдельные виртуальные машины Java могут исключать из трассировки стека один или несколько кадров стека. В крайнем случае виртуальной машине, не располагающей сведениями о трассировке стека потока, связанного с этим ThreadInfo, разрешается возвращать из этого метода массив нулевой длины.

Возвращает:
массив объектов StackTraceElement потока.

isSuspended

public boolean isSuspended()
Проверяет, приостановлен ли поток, связанный с этим ThreadInfo.
Возвращает:
true, если поток приостановлен; в противном случае — false.
Внешние спецификации
  • Интерфейс инструментов JVM

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
См. также:
  • Thread.isDaemon()

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.

Атрибуты и их типы для составных данных ThreadInfo
Имя атрибута Тип Начиная с версии
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).

Если заданный объект CompositeData не содержит этот атрибут, объект LockInfo будет создан на основе значения атрибута lockName.

6
lockedMonitors javax.management.openmbean.CompositeData[], тип элементов которого является отображаемым типом для MonitorInfo, как указано в методе MonitorInfo.from.

Если заданный объект CompositeData не содержит этот атрибут, ему будет присвоен пустой массив.

6
lockedSynchronizers javax.management.openmbean.CompositeData[], тип элементов которого является отображаемым типом для LockInfo, как указано в методе LockInfo.from(CompositeData).

Если заданный объект CompositeData не содержит этот атрибут, ему будет присвоен пустой массив.

6
daemon java.lang.Boolean

Если заданный объект CompositeData не содержит этот атрибут, ему будет присвоено значение false.

9
priority java.lang.Integer

Если заданный объект CompositeData не содержит этот атрибут, ему будет присвоено значение Thread.NORM_PRIORITY.

9
Объект CompositeData, представляющий StackTraceElement версии N, должен содержать все атрибуты, определенные в версии ≤ N, если не указано иное.
Атрибуты и их типы для составных данных StackTraceElement
Имя атрибута Тип Начиная с версии
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

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторское право © 1993, 2025, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API