Класс ThreadInfo

public class ThreadInfo
extends Object

Информация о потоке. ThreadInfo содержит информацию о потоке, включая:

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

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

Информация об исполнении

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

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

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

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

Сопоставление 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()

Возвращает ID потока, владеющего объектом, для которого поток, связанный с этим ThreadInfo, блокируется в ожидании.

String getLockOwnerName()

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

int getPriority()

Возвращает приоритет потока потока, связанного с этим ThreadInfo.

StackTraceElement[] getStackTrace()

Возвращает стек вызовов потока, связанного с этим ThreadInfo.

long getThreadId()

Возвращает ID потока, связанного с этим ThreadInfo.

String getThreadName()

Возвращает имя потока, связанного с этим ThreadInfo.

Thread.State getThreadState()

Возвращает состояние потока, связанного с этим ThreadInfo.

long getWaitedCount()

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

long getWaitedTime()

Возвращает приблизительное накопленное время ожидания (в миллисекундах), которое поток, связанный с этим ThreadInfo, ожидал уведомления с момента активации мониторинга конкуренции потоков.

boolean isDaemon()

Проверяет, является ли поток, связанный с этим ThreadInfo, демон-потоком.

boolean isInNative()

Проверяет, выполняет ли поток, связанный с этим ThreadInfo, код нативных функций через Java Native Interface (JNI).

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 , если был вызван Thread.suspend().

Возвращает:
true , если поток приостановлен; false в противном случае.

isInNative

public boolean isInNative()

Проверяет, выполняет ли поток, связанный с этим ThreadInfo код нативных функций через Java Native Interface (JNI). Код нативных функций JNI не включает код поддержки виртуальной машины или скомпилированный нативный код, сгенерированный виртуальной машиной.

Возвращает:
true , если поток выполняет нативный код; false в противном случае.

isDaemon

public boolean isDaemon()

Проверяет, является ли поток, связанный с этим ThreadInfo , демоном.

Возвращает:
true , если поток является демон-потоком, false в противном случае.
С:
9
См. также:
Thread.isDaemon()

getPriority

public int getPriority()

Возвращает приоритет потока потока, связанного с этим ThreadInfo.

Возвращает:
Приоритет потока, связанного с этим ThreadInfo.
С:
9

toString

public String toString()

Возвращает строковое представление информации о данном потоке. Формат этой строки зависит от реализации. Возвращаемая строка обычно включает в себя имя потока, ID потока, его состояние и, при наличии, стек вызовов.

Overrides:
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).

Если данный 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, если не указано иное.
Имя атрибута Тип С версии
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, 2020, 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/11/docs/api/java.management/java/lang/management/ThreadInfo.html

Spec-Zone .ru
спецификации, руководства, описания, API