Spec-Zone.ru › OpenJDK 27

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

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

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, нативный код.

Поток считается выполняющим нативный код, если он выполняет нативный метод, выполняет нативный код, вызванный с помощью дескриптора методаRESTRICTED, полученного от нативного компоновщика, или подключен к виртуальной машине с помощью Java Native Interface и не имеет кадров Java в стеке.

Нативный код не включает служебный код виртуальной машины Java, скомпилированный код, созданный виртуальной машиной Java, или особые случаи, например поток, заблокированный на необработанном мониторе JVM TI.

Возвращает:
true, если поток выполняет нативный код; в противном случае — 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, 2026, 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.

Spec-Zone.ru

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