Spec-Zone.ru › OpenJDK 24

Класс ThreadInfo

java.lang.Object
java.lang.management.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
See Also:
  • 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()
Возвращает строковое представление данной информации о потоке.

Методы, объявленные в классе java.lang.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, код нативном языке.

Поток считается выполняющим код на нативном языке, когда он выполняет нативный метод, выполняет нативный код, вызванный с помощью обработчика методовОГРАНИЧЕНО, полученного от нативного линкера, или прикреплен к виртуальной машине с помощью присоединения к интерфейсу 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
трассировка стека javax.management.openmbean.CompositeData[], каждый элемент - CompositeData, представляющий StackTraceElement, как указано ниже. 5
lockInfo javax.management.openmbean.CompositeData - сопоставленный тип для LockInfo, как указано в методе LockInfo.from(javax.management.openmbean.CompositeData).

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

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

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

6
lockedSynchronizers javax.management.openmbean.CompositeData[], тип элемента которого - сопоставленный тип для LockInfo, как указано в методе LockInfo.from(javax.management.openmbean.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, представляющих собой заблокированные объектные мониторы потока.
Since:
1.6

getLockedSynchronizers

public LockInfo[] getLockedSynchronizers()
Возвращает массив объектов LockInfo, каждый из которых представляет собой синхронизатор со свойством владения, который в данный момент заблокирован потоком, связанным с этим ThreadInfo. Если для этой информации о потоке не запрошен заблокированный синхронизатор или поток не заблокировал ни одного синхронизатора, метод вернет массив нулевой длины.
Возвращает:
массив объектов LockInfo, представляющих собой заблокированные синхронизаторы со свойством владения потоком.
Since:
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://download.java.net/java/early_access/jdk24/docs/api/java.management/java/lang/management/ThreadInfo.html

Spec-Zone.ru

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