Spec-Zone.ru › OpenJDK 8

Класс 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.
С:
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()

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

long getLockOwnerId()

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

String getLockOwnerName()

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

StackTraceElement[] getStackTrace()

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

long getThreadId()

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

String getThreadName()

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

Thread.State getThreadState()

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

long getWaitedCount()

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

long getWaitedTime()

Возвращает приблизительное накопленное время ожидания (в миллисекундах), которое поток, связанный с этим 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.

Возвращает:
состояние связанного потока.

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 в противном случае.

toString

public String toString()

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

Переопределяет:
toString в классе Object
Возвращает:
строковое представление этой информации о потоке.

from

public static ThreadInfo from(CompositeData cd)
Возвращает объект ThreadInfo , представленный заданным CompositeData. Заданный CompositeData должен содержать следующие атрибуты, если не указано иное ниже:
Имя атрибута Тип
threadId java.lang.Long
threadName java.lang.String
threadState java.lang.String
suspended java.lang.Boolean
inNative java.lang.Boolean
blockedCount java.lang.Long
blockedTime java.lang.Long
waitedCount java.lang.Long
waitedTime java.lang.Long
lockInfo javax.management.openmbean.CompositeData — отображаемый тип для LockInfo, как указано в методе LockInfo.from(javax.management.openmbean.CompositeData).

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

lockName java.lang.String
lockOwnerId java.lang.Long
lockOwnerName java.lang.String
stackTrace javax.management.openmbean.CompositeData[]

Каждый элемент представляет собой CompositeData , представляющий StackTraceElement, содержащий следующие атрибуты:

Имя атрибута Тип
className java.lang.String
methodName java.lang.String
fileName java.lang.String
lineNumber java.lang.Integer
nativeMethod java.lang.Boolean
lockedMonitors javax.management.openmbean.CompositeData[] , тип элемента которого — отображаемый тип для MonitorInfo, как указано в методе Monitor.from.

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

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

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

Параметры:
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.

Spec-Zone.ru

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