Spec-Zone.ru › OpenJDK 17

Интерфейс ThreadMXBean

Все суперинтерфейсы:
PlatformManagedObject
Все известные подинтерфейсы:
ThreadMXBean
public interface ThreadMXBean extends PlatformManagedObject
Интерфейс управления системой потоков виртуальной машины Java.

Виртуальная машина Java имеет единственный экземпляр реализации этого интерфейса. Этот экземпляр, реализующий данный интерфейс, является MXBean, который можно получить, вызвав метод ManagementFactory.getThreadMXBean() или из метода platform MBeanServer.

Имя ObjectName для уникальной идентификации MXBean для системы потоков внутри MBeanServer:

java.lang:type=Threading
Его можно получить, вызвав метод PlatformManagedObject.getObjectName().

Идентификатор потока

Идентификатор потока — положительное значение типа long, возвращаемое методом Thread.getId() для потока. Идентификатор потока уникален в течение его жизни. Когда поток завершается, этот идентификатор может быть повторно использован.

Некоторые методы в этом интерфейсе принимают идентификатор потока или массив идентификаторов потоков в качестве входного параметра и возвращают информацию о каждом потоке.

Время выполнения потока на процессоре

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

Метод isThreadCpuTimeSupported() можно использовать для определения, поддерживает ли виртуальная машина Java измерение времени выполнения на процессоре для любого потока. Метод isCurrentThreadCpuTimeSupported() можно использовать для определения, поддерживает ли виртуальная машина Java измерение времени выполнения на процессоре для текущего потока. Реализация виртуальной машины Java, поддерживающая измерение времени выполнения на процессоре для любого потока, также будет поддерживать это для текущего потока.

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

Виртуальная машина Java может по умолчанию отключить измерение времени выполнения на процессоре. Методы isThreadCpuTimeEnabled() и setThreadCpuTimeEnabled(boolean) можно использовать для проверки, включено ли измерение времени выполнения на процессоре, и для включения/отключения этой поддержки соответственно. Включение измерения времени выполнения потока на процессоре может быть ресурсоемким в некоторых реализациях виртуальной машины Java.

Мониторинг конкуренции потоков

Некоторые виртуальные машины Java могут поддерживать мониторинг конкуренции потоков. Когда мониторинг конкуренции потоков включен, накопленное прошедшее время, в течение которого поток заблокирован для синхронизации или ожидания уведомления, будет собираться и возвращаться в объекте ThreadInfo.

Метод isThreadContentionMonitoringSupported() можно использовать для определения, поддерживает ли виртуальная машина Java мониторинг конкуренции потоков. Мониторинг конкуренции потоков по умолчанию отключен. Метод setThreadContentionMonitoringEnabled(boolean) можно использовать для включения мониторинга конкуренции потоков.

Информация о синхронизации и обнаружение тупиков

Некоторые виртуальные машины Java могут поддерживать мониторинг использования монитора объектов и использования владеемых синхронизаторов. Методы getThreadInfo(long[], boolean, boolean) и dumpAllThreads(boolean, boolean) можно использовать для получения трассировки стека потока и информации о синхронизации, включая за какой блокировки поток заблокирован для приобретения или ожидания и какие блокировки поток в настоящее время владеет.

Интерфейс ThreadMXBean предоставляет методы findMonitorDeadlockedThreads() и findDeadlockedThreads() для поиска тупиков в работающем приложении.

С:
1.5
См. также:
  • ManagementFactory.getPlatformMXBeans(Class)
  • Спецификация JMX.
  • Способы доступа к MXBeans

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

Модификатор и тип Метод Описание
ThreadInfo[] dumpAllThreads(boolean lockedMonitors, boolean lockedSynchronizers)
Возвращает информацию о потоке для всех активных потоков со стековой трассировкой и информацией о синхронизации.
default ThreadInfo[] dumpAllThreads(boolean lockedMonitors, boolean lockedSynchronizers, int maxDepth)
Возвращает информацию о потоке для всех активных потоков со стековой трассировкой указанного максимального числа элементов и информацией о синхронизации.
long[] findDeadlockedThreads()
Находит циклы потоков, которые находятся в тупике, ожидая приобретения мониторов объектов или владеемых синхронизаторов.
long[] findMonitorDeadlockedThreads()
Находит циклы потоков, которые находятся в тупике, ожидая приобретения мониторов объектов.
long[] getAllThreadIds()
Возвращает все идентификаторы активных потоков.
long getCurrentThreadCpuTime()
Возвращает общее время выполнения текущего потока на процессоре в наносекундах.
long getCurrentThreadUserTime()
Возвращает время выполнения текущего потока в пользовательском режиме в наносекундах.
int getDaemonThreadCount()
Возвращает текущее количество активных демонических потоков.
int getPeakThreadCount()
Возвращает максимальное количество активных потоков с момента запуска виртуальной машины Java или с момента сброса пика.
int getThreadCount()
Возвращает текущее количество активных потоков, включая как демонические, так и не демонические потоки.
long getThreadCpuTime(long id)
Возвращает общее время выполнения потока с указанным идентификатором на процессоре в наносекундах.
ThreadInfo getThreadInfo(long id)
Возвращает информацию о потоке для потока с указанным id, без стековой трассировки.
ThreadInfo[] getThreadInfo(long[] ids)
Возвращает информацию о потоке для каждого потока, чьи идентификаторы находятся в входном массиве ids, без стековой трассировки.
ThreadInfo[] getThreadInfo(long[] ids, boolean lockedMonitors, boolean lockedSynchronizers)
Возвращает информацию о потоке для каждого потока, чьи идентификаторы находятся в входном массиве ids, со стековой трассировкой и информацией о синхронизации.
default ThreadInfo[] getThreadInfo(long[] ids, boolean lockedMonitors, boolean lockedSynchronizers, int maxDepth)
Возвращает информацию о потоке для каждого потока, чьи идентификаторы находятся в входном массиве ids, со стековой трассировкой указанного максимального числа элементов и информацией о синхронизации.
ThreadInfo[] getThreadInfo(long[] ids, int maxDepth)
Возвращает информацию о потоке для каждого потока, чьи идентификаторы находятся в входном массиве ids, со стековой трассировкой указанного числа элементов.
ThreadInfo getThreadInfo(long id, int maxDepth)
Возвращает информацию о потоке для потока с указанным id, со стековой трассировкой указанного числа элементов.
long getThreadUserTime(long id)
Возвращает время выполнения потока с указанным идентификатором в пользовательском режиме в наносекундах.
long getTotalStartedThreadCount()
Возвращает общее количество созданных и запущенных потоков с момента запуска виртуальной машины Java.
boolean isCurrentThreadCpuTimeSupported()
Проверяет, поддерживает ли виртуальная машина Java измерение времени выполнения на процессоре для текущего потока.
boolean isObjectMonitorUsageSupported()
Проверяет, поддерживает ли виртуальная машина Java мониторинг использования монитора объектов.
boolean isSynchronizerUsageSupported()
Проверяет, поддерживает ли виртуальная машина Java мониторинг использования владеемых синхронизаторов.
boolean isThreadContentionMonitoringEnabled()
Проверяет, включен ли мониторинг конкуренции потоков.
boolean isThreadContentionMonitoringSupported()
Проверяет, поддерживает ли виртуальная машина Java мониторинг конкуренции потоков.
boolean isThreadCpuTimeEnabled()
Проверяет, включено ли измерение времени выполнения потока на процессоре.
boolean isThreadCpuTimeSupported()
Проверяет, поддерживает ли реализация виртуальной машины Java измерение времени выполнения на процессоре для любого потока.
void resetPeakThreadCount()
Сбрасывает максимальное количество потоков до текущего количества активных потоков.
void setThreadContentionMonitoringEnabled(boolean enable)
Включает или отключает мониторинг конкуренции потоков.
void setThreadCpuTimeEnabled(boolean enable)
Включает или отключает измерение времени выполнения потока на процессоре.

Методы, объявленные в интерфейсе java.lang.management.PlatformManagedObject

getObjectName

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

getThreadCount

int getThreadCount()
Возвращает текущее количество активных потоков, включая как потоки-демона, так и недемоны.
Возвращает:
текущее количество активных потоков.

getPeakThreadCount

int getPeakThreadCount()
Возвращает пиковое значение количества активных потоков с момента запуска виртуальной машины Java или сброса пикового значения.
Возвращает:
пиковое значение количества активных потоков.

getTotalStartedThreadCount

long getTotalStartedThreadCount()
Возвращает общее количество потоков, созданных и запущенных с момента запуска виртуальной машины Java.
Возвращает:
общее количество запущенных потоков.

getDaemonThreadCount

int getDaemonThreadCount()
Возвращает текущее количество активных потоков-демонов.
Возвращает:
текущее количество активных потоков-демонов.

getAllThreadIds

long[] getAllThreadIds()
Возвращает все идентификаторы активных потоков. Некоторые потоки, включенные в возвращаемый массив, могут быть завершены к моменту возврата этого метода.
Возвращает:
массив long, каждый из которых является идентификатором потока.
Исключения:
SecurityException - если существует менеджер безопасности и вызывающий объект не имеет права ManagementPermission("monitor").

getThreadInfo

ThreadInfo getThreadInfo(long id)
Возвращает информацию о потоке с указанным id без трассировки стека. Этот метод эквивалентен вызову:
getThreadInfo(id, 0);

Этот метод возвращает объект ThreadInfo, представляющий информацию о потоке с указанным ID. Трассировка стека, заблокированные мониторы и заблокированные синхронизаторы в возвращаемом объекте ThreadInfo будут пустыми. Если поток с заданным ID не активен или не существует, этот метод вернет null. Поток считается активным, если он был запущен и еще не завершен.

Доступ к MBeanServer:
Сопоставленный тип ThreadInfo - это CompositeData с атрибутами, как указано в методе ThreadInfo.from.

Параметры:
id - идентификатор потока. Должен быть положительным.
Возвращает:
объект ThreadInfo для потока с заданным ID без трассировки стека, без информации о заблокированных мониторах и синхронизаторах; null если поток с заданным ID не активен или не существует.
Исключения:
IllegalArgumentException - если id <= 0.
SecurityException - если существует менеджер безопасности и вызывающий объект не имеет права ManagementPermission("monitor").

getThreadInfo

ThreadInfo[] getThreadInfo(long[] ids)
Возвращает информацию о потоках для каждого потока, чей ID находится во входном массиве ids без трассировки стека. Этот метод эквивалентен вызову:
   getThreadInfo(ids, 0);
 

Этот метод возвращает массив объектов ThreadInfo. Трассировка стека, заблокированные мониторы и заблокированные синхронизаторы в каждом объекте ThreadInfo будут пустыми. Если поток с заданным ID не активен или не существует, соответствующий элемент в возвращаемом массиве будет содержать null. Поток считается активным, если он был запущен и еще не завершен.

Доступ к MBeanServer:
Сопоставленный тип ThreadInfo - это CompositeData с атрибутами, как указано в методе ThreadInfo.from.

Параметры:
ids - массив идентификаторов потоков.
Возвращает:
массив объектов ThreadInfo, каждый из которых содержит информацию о потоке, чей ID находится в соответствующем элементе входного массива ID без трассировки стека, без информации о заблокированных мониторах и синхронизаторах.
Исключения:
IllegalArgumentException - если любой элемент во входном массиве ids является <= 0.
SecurityException - если существует менеджер безопасности и вызывающий объект не имеет права ManagementPermission("monitor").

getThreadInfo

ThreadInfo getThreadInfo(long id, int maxDepth)
Возвращает информацию о потоке с указанным id, с трассировкой стека указанного количества элементов. Параметр maxDepth указывает максимальное количество элементов StackTraceElement, которые необходимо получить из трассировки стека. Если maxDepth == Integer.MAX_VALUE, будет выгружена вся трассировка стека потока. Если maxDepth == 0, трассировка стека потока выгружаться не будет. Этот метод не получает заблокированные мониторы и заблокированные синхронизаторы потока.

Когда виртуальная машина Java не имеет информации о трассировке стека потока или maxDepth == 0, трассировка стека в объекте ThreadInfo будет пустым массивом StackTraceElement.

Если поток с заданным ID не активен или не существует, этот метод вернет null. Поток считается активным, если он был запущен и еще не завершен.

Доступ к MBeanServer:
Сопоставленный тип ThreadInfo - это CompositeData с атрибутами, как указано в методе ThreadInfo.from.

Параметры:
id - идентификатор потока. Должен быть положительным.
maxDepth - максимальное количество записей в трассировке стека для выгрузки. Integer.MAX_VALUE может использоваться для запроса выгрузки всего стека.
Возвращает:
объект ThreadInfo для потока с заданным ID без информации о заблокированных мониторах и синхронизаторах. null если поток с заданным ID не активен или не существует.
Исключения:
IllegalArgumentException - если id <= 0.
IllegalArgumentException - если maxDepth is negative.
SecurityException - если существует менеджер безопасности и вызывающий объект не имеет права ManagementPermission("monitor").

getThreadInfo

ThreadInfo[] getThreadInfo(long[] ids, int maxDepth)
Возвращает информацию о потоках для каждого потока, чей ID находится во входном массиве ids, с трассировкой стека указанного количества элементов. Параметр maxDepth указывает максимальное количество элементов StackTraceElement, которые необходимо получить из трассировки стека. Если maxDepth == Integer.MAX_VALUE, будет выгружена вся трассировка стека потока. Если maxDepth == 0, трассировка стека потока выгружаться не будет. Этот метод не получает заблокированные мониторы и заблокированные синхронизаторы потоков.

Когда виртуальная машина Java не имеет информации о трассировке стека потока или maxDepth == 0, трассировка стека в объекте ThreadInfo будет пустым массивом StackTraceElement.

Этот метод возвращает массив объектов ThreadInfo, каждый из которых представляет информацию о потоке с тем же индексом, что и во входном массиве ids. Если поток с заданным ID не активен или не существует, null будет установлен в соответствующий элемент возвращаемого массива. Поток считается активным, если он был запущен и еще не завершен.

Доступ к MBeanServer:
Сопоставленный тип ThreadInfo - это CompositeData с атрибутами, как указано в методе ThreadInfo.from.

Параметры:
ids - массив идентификаторов потоков
maxDepth - максимальное количество записей в трассировке стека для выгрузки. Integer.MAX_VALUE может использоваться для запроса выгрузки всего стека.
Возвращает:
массив объектов ThreadInfo, каждый из которых содержит информацию о потоке, чей ID находится в соответствующем элементе входного массива ID без информации о заблокированных мониторах и синхронизаторах.
Исключения:
IllegalArgumentException - если maxDepth is negative.
IllegalArgumentException - если любой элемент во входном массиве ids является <= 0.
SecurityException - если существует менеджер безопасности и вызывающий объект не имеет права ManagementPermission("monitor").

isThreadContentionMonitoringSupported

boolean isThreadContentionMonitoringSupported()
Проверяет, поддерживает ли виртуальная машина Java мониторинг конкуренции потоков.
Возвращает:
true если виртуальная машина Java поддерживает мониторинг конкуренции потоков; false в противном случае.

isThreadContentionMonitoringEnabled

boolean isThreadContentionMonitoringEnabled()
Проверяет, включен ли мониторинг конкуренции потоков.
Возвращает:
true если мониторинг конкуренции потоков включен; false в противном случае.
Исключения:
UnsupportedOperationException - если виртуальная машина Java не поддерживает мониторинг конкуренции потоков.
См. также:
  • isThreadContentionMonitoringSupported()

setThreadContentionMonitoringEnabled

void setThreadContentionMonitoringEnabled(boolean enable)
Включает или отключает мониторинг конкуренции потоков. Мониторинг конкуренции потоков по умолчанию отключен.
Parameters:
enable - true для включения; false для отключения.
Throws:
UnsupportedOperationException - если виртуальная машина Java не поддерживает мониторинг конкуренции потоков.
SecurityException - если существует менеджер безопасности, и вызывающий элемент не имеет разрешения ManagementPermission("control").
See Also:
  • isThreadContentionMonitoringSupported()

getCurrentThreadCpuTime

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

Этот метод предназначен для удобства локального управления и эквивалентен вызову:

   getThreadCpuTime(Thread.currentThread().getId());
 
Returns:
общее время выполнения текущего потока, если измерение времени ЦП включено; -1 в противном случае.
Throws:
UnsupportedOperationException - если виртуальная машина Java не поддерживает измерение времени ЦП для текущего потока.
See Also:
  • getCurrentThreadUserTime()
  • isCurrentThreadCpuTimeSupported()
  • isThreadCpuTimeEnabled()
  • setThreadCpuTimeEnabled(boolean)

getCurrentThreadUserTime

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

Этот метод предназначен для удобства локального управления и эквивалентен вызову:

   getThreadUserTime(Thread.currentThread().getId());
 
Returns:
время ЦП на уровне пользователя для текущего потока, если измерение времени ЦП включено; -1 в противном случае.
Throws:
UnsupportedOperationException - если виртуальная машина Java не поддерживает измерение времени ЦП для текущего потока.
See Also:
  • getCurrentThreadCpuTime()
  • isCurrentThreadCpuTimeSupported()
  • isThreadCpuTimeEnabled()
  • setThreadCpuTimeEnabled(boolean)

getThreadCpuTime

long getThreadCpuTime(long id)
Возвращает общее время выполнения потока с заданным идентификатором в наносекундах. Возвращаемое значение имеет точность в наносекундах, но не обязательно точно в наносекундах. Если реализация различает время пользователя и время системы, возвращаемое время ЦП — это количество времени, в течение которого поток выполнялся в режиме пользователя или в режиме системы.

Если поток с заданным идентификатором не активен или не существует, этот метод возвращает -1. Если измерение времени ЦП отключено, этот метод возвращает -1. Поток считается активным, если он запущен и еще не завершился.

Если измерение времени ЦП включено после запуска потока, реализация виртуальной машины Java может выбрать любой момент времени до и включая время включения этой возможности в качестве точки начала измерения времени ЦП.

Parameters:
id - идентификатор потока
Returns:
общее время выполнения потока с заданным идентификатором, если поток с заданным идентификатором существует, поток активен и измерение времени ЦП включено; -1 в противном случае.
Throws:
IllegalArgumentException - если id <= 0.
UnsupportedOperationException - если виртуальная машина Java не поддерживает измерение времени ЦП для других потоков.
See Also:
  • getThreadUserTime(long)
  • isThreadCpuTimeSupported()
  • isThreadCpuTimeEnabled()
  • setThreadCpuTimeEnabled(boolean)

getThreadUserTime

long getThreadUserTime(long id)
Возвращает время выполнения потока с заданным идентификатором в режиме пользователя в наносекундах. Возвращаемое значение имеет точность в наносекундах, но не обязательно точно в наносекундах.

Если поток с заданным идентификатором не активен или не существует, этот метод возвращает -1. Если измерение времени ЦП отключено, этот метод возвращает -1. Поток считается активным, если он запущен и еще не завершился.

Если измерение времени ЦП включено после запуска потока, реализация виртуальной машины Java может выбрать любой момент времени до и включая время включения этой возможности в качестве точки начала измерения времени ЦП.

Parameters:
id - идентификатор потока
Returns:
время ЦП на уровне пользователя для потока с заданным идентификатором, если поток с заданным идентификатором существует, поток активен и измерение времени ЦП включено; -1 в противном случае.
Throws:
IllegalArgumentException - если id <= 0.
UnsupportedOperationException - если виртуальная машина Java не поддерживает измерение времени ЦП для других потоков.
See Also:
  • getThreadCpuTime(long)
  • isThreadCpuTimeSupported()
  • isThreadCpuTimeEnabled()
  • setThreadCpuTimeEnabled(boolean)

isThreadCpuTimeSupported

boolean isThreadCpuTimeSupported()
Проверяет, поддерживает ли реализация виртуальной машины Java измерение времени ЦП для любого потока. Реализация виртуальной машины Java, которая поддерживает измерение времени ЦП для любого потока, также будет поддерживать измерение времени ЦП для текущего потока.
Returns:
true если виртуальная машина Java поддерживает измерение времени ЦП для любого потока; false в противном случае.

isCurrentThreadCpuTimeSupported

boolean isCurrentThreadCpuTimeSupported()
Проверяет, поддерживает ли виртуальная машина Java измерение времени ЦП для текущего потока. Этот метод возвращает true если isThreadCpuTimeSupported() возвращает true.
Returns:
true если виртуальная машина Java поддерживает измерение времени ЦП для текущего потока; false в противном случае.

isThreadCpuTimeEnabled

boolean isThreadCpuTimeEnabled()
Проверяет, включено ли измерение времени ЦП для потока.
Returns:
true если измерение времени ЦП для потока включено; false в противном случае.
Throws:
UnsupportedOperationException - если виртуальная машина Java не поддерживает измерение времени ЦП ни для других потоков, ни для текущего потока.
See Also:
  • isThreadCpuTimeSupported()
  • isCurrentThreadCpuTimeSupported()

setThreadCpuTimeEnabled

void setThreadCpuTimeEnabled(boolean enable)
Включает или отключает измерение времени ЦП потока. По умолчанию зависит от платформы.
Parameters:
enable - true для включения; false для отключения.
Throws:
UnsupportedOperationException - если виртуальная машина Java не поддерживает измерение времени ЦП ни для каких потоков, ни для текущего потока.
SecurityException - если существует менеджер безопасности, и вызывающий элемент не имеет разрешения ManagementPermission("control").
See Also:
  • isThreadCpuTimeSupported()
  • isCurrentThreadCpuTimeSupported()

findMonitorDeadlockedThreads

long[] findMonitorDeadlockedThreads()
Находит циклы потоков, заблокированных в тупике ожидания получения мониторов объектов. То есть потоки, заблокированные в ожидании входа в синхронизационный блок или ожидания повторного входа в синхронизационный блок после вызова Object.wait, где каждый поток владеет одним монитором, пытаясь получить другой монитор, уже удерживаемый другим потоком в цикле.

Более формально, поток находится в мониторном тупике, если он входит в цикл в отношении "ожидает монитор объекта, которым владеет". В простейшем случае поток A заблокирован в ожидании монитора, которым владеет поток B, а поток B заблокирован в ожидании монитора, которым владеет поток A.

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

Этот метод находит тупики, связанные только с мониторами объектов. Чтобы найти тупики, включающие как мониторы объектов, так и ownable synchronizers, следует использовать метод findDeadlockedThreads.

Returns:
массив идентификаторов потоков, находящихся в мониторном тупике, если таковые имеются; null в противном случае.
Throws:
SecurityException - если существует менеджер безопасности, и вызывающий элемент не имеет разрешения ManagementPermission("monitor").
See Also:
  • findDeadlockedThreads()

resetPeakThreadCount

void resetPeakThreadCount()
Сбрасывает максимальное количество потоков до текущего количества активных потоков.
Throws:
SecurityException - если существует менеджер безопасности, и у вызывающего объекта нет разрешения ManagementPermission("control").
See Also:
  • getPeakThreadCount()
  • getThreadCount()

findDeadlockedThreads

long[] findDeadlockedThreads()
Находит циклы потоков, которые находятся в тупике, ожидая получения мониторов объектов или включенных синхронизаторов. Потоки находятся в тупике в цикле, ожидая блокировки этих двух типов, если каждый поток владеет одной блокировкой, пытаясь получить другую блокировку, уже удерживаемую другим потоком в цикле.

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

Returns:
массив идентификаторов потоков, которые находятся в тупике, ожидая мониторов объектов или включенных синхронизаторов, если таковые имеются; null в противном случае.
Throws:
SecurityException - если существует менеджер безопасности, и у вызывающего объекта нет разрешения ManagementPermission("monitor").
UnsupportedOperationException - если виртуальная машина Java не поддерживает мониторинг использования включенных синхронизаторов.
Since:
1.6
See Also:
  • isSynchronizerUsageSupported()
  • findMonitorDeadlockedThreads()

isObjectMonitorUsageSupported

boolean isObjectMonitorUsageSupported()
Проверяет, поддерживает ли виртуальная машина Java мониторинг использования мониторов объектов.
Returns:
true если виртуальная машина Java поддерживает мониторинг использования мониторов объектов; false в противном случае.
Since:
1.6
See Also:
  • dumpAllThreads(boolean, boolean)

isSynchronizerUsageSupported

boolean isSynchronizerUsageSupported()
Проверяет, поддерживает ли виртуальная машина Java мониторинг использования включенных синхронизаторов.
Returns:
true если виртуальная машина Java поддерживает мониторинг использования включенных синхронизаторов; false в противном случае.
Since:
1.6
See Also:
  • dumpAllThreads(boolean, boolean)

getThreadInfo

ThreadInfo[] getThreadInfo(long[] ids, boolean lockedMonitors, boolean lockedSynchronizers)
Возвращает информацию о потоках, ID которых указаны в входном массиве ids, со стековым следом и информацией о синхронизации. Это эквивалентно вызову:
getThreadInfo(ids, lockedMonitors, lockedSynchronizers, Integer.MAX_VALUE)
Parameters:
ids - массив идентификаторов потоков.
lockedMonitors - если true, извлекает все заблокированные мониторы.
lockedSynchronizers - если true, извлекает все заблокированные включенные синхронизаторы.
Returns:
массив объектов ThreadInfo, каждый из которых содержит информацию о потоке, чей идентификатор находится в соответствующем элементе входного массива идентификаторов.
Throws:
SecurityException - если существует менеджер безопасности, и у вызывающего объекта нет разрешения ManagementPermission("monitor").
UnsupportedOperationException -
  • если lockedMonitors равно true, но виртуальная машина Java не поддерживает мониторинг использования монитора объектов; или
  • если lockedSynchronizers равно true, но виртуальная машина Java не поддерживает мониторинг использования включенных синхронизаторов.
Since:
1.6
See Also:
  • isObjectMonitorUsageSupported()
  • isSynchronizerUsageSupported()

getThreadInfo

default ThreadInfo[] getThreadInfo(long[] ids, boolean lockedMonitors, boolean lockedSynchronizers, int maxDepth)
Возвращает информацию о потоках, ID которых указаны в входном массиве ids, со стековым следом заданной максимальной длины и информацией о синхронизации. Если maxDepth == 0, стековый след потока не будет выведен.

Этот метод получает моментальный снимок информации о каждом потоке, включая:

  • стековый след заданной максимальной длины,
  • мониторы объектов, которые в данный момент заблокированы потоком, если lockedMonitors равно true, и
  • включенные синхронизаторы, которые в данный момент заблокированы потоком, если lockedSynchronizers равно true.

Этот метод возвращает массив объектов ThreadInfo, каждый из которых содержит информацию о потоке с тем же индексом, что и в массиве ids. Если поток с заданным ID не активен или не существует, null будет установлено в соответствующем элементе возвращаемого массива. Поток считается активным, если он был запущен и еще не завершен.

Если поток не блокирует ни один монитор объекта, или lockedMonitors равно false, возвращаемый объект ThreadInfo будет иметь пустой массив MonitorInfo. Аналогично, если поток не блокирует ни один синхронизатор или lockedSynchronizers равно false, возвращаемый объект ThreadInfo будет иметь пустой массив LockInfo.

Когда оба параметра lockedMonitors и lockedSynchronizers равны false, это эквивалентно вызову:

     getThreadInfo(ids, maxDepth)
 

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

Доступ к MBeanServer:
Картируемый тип ThreadInfo – CompositeData с атрибутами, как указано в методе ThreadInfo.from.

Implementation Requirements:
Встроенная реализация выбрасывает UnsupportedOperationException.
Parameters:
ids - массив идентификаторов потоков.
lockedMonitors - если true, извлекает все заблокированные мониторы.
lockedSynchronizers - если true, извлекает все заблокированные включенные синхронизаторы.
maxDepth - указывает максимальное количество StackTraceElement для извлечения из стекового следа.
Returns:
массив объектов ThreadInfo, каждый из которых содержит информацию о потоке, чей идентификатор находится в соответствующем элементе входного массива идентификаторов.
Throws:
IllegalArgumentException - если maxDepth отрицательно.
SecurityException - если существует менеджер безопасности, и у вызывающего объекта нет разрешения ManagementPermission("monitor").
UnsupportedOperationException -
  • если lockedMonitors равно true, но виртуальная машина Java не поддерживает мониторинг использования монитора объектов; или
  • если lockedSynchronizers равно true, но виртуальная машина Java не поддерживает мониторинг использования включенных синхронизаторов.
Since:
10
See Also:
  • isObjectMonitorUsageSupported()
  • isSynchronizerUsageSupported()

dumpAllThreads

ThreadInfo[] dumpAllThreads(boolean lockedMonitors, boolean lockedSynchronizers)
Возвращает информацию о всех активных потоках со стековым следом и информацией о синхронизации. Это эквивалентно вызову:
dumpAllThreads(lockedMonitors, lockedSynchronizers, Integer.MAX_VALUE)
Parameters:
lockedMonitors - если true, вывести все заблокированные мониторы.
lockedSynchronizers - если true, вывести все заблокированные включенные синхронизаторы.
Returns:
массив ThreadInfo для всех активных потоков.
Throws:
SecurityException - если существует менеджер безопасности, и у вызывающего объекта нет разрешения ManagementPermission("monitor").
UnsupportedOperationException -
  • если lockedMonitors равно true, но виртуальная машина Java не поддерживает мониторинг использования монитора объектов; или
  • если lockedSynchronizers равно true, но виртуальная машина Java не поддерживает мониторинг использования включенных синхронизаторов.
Since:
1.6
See Also:
  • isObjectMonitorUsageSupported()
  • isSynchronizerUsageSupported()

dumpAllThreads

default ThreadInfo[] dumpAllThreads(boolean lockedMonitors, boolean lockedSynchronizers, int maxDepth)
Возвращает информацию о всех активных потоках со стековым следом заданной максимальной длины и информацией о синхронизации. Если maxDepth == 0, стековый след потока не будет выведен. Некоторые потоки, включенные в возвращаемый массив, могут быть завершены к моменту возврата этого метода.

Этот метод возвращает массив объектов ThreadInfo, как указано в методе getThreadInfo(long[], boolean, boolean, int).

Требования к реализации:
В стандартной реализации выбрасывается UnsupportedOperationException.
Параметры:
lockedMonitors - если true, вывести все заблокированные мониторы.
lockedSynchronizers - если true, вывести все заблокированные синхронизаторы.
maxDepth - указывает максимальное количество StackTraceElement для извлечения из стекового следа.
Возвращает:
массив ThreadInfo для всех активных потоков.
Исключения:
IllegalArgumentException - если maxDepth отрицательно.
SecurityException - если менеджер безопасности существует и у вызывающего объекта нет разрешения ManagementPermission("monitor").
UnsupportedOperationException -
  • если lockedMonitors равно true, но виртуальная машина Java не поддерживает мониторинг использования объектных мониторов; или
  • если lockedSynchronizers равно true, но виртуальная машина Java не поддерживает мониторинг использования синхронизаторов.
С:
10
См. также:
  • isObjectMonitorUsageSupported()
  • isSynchronizerUsageSupported()

© 1993, 2021, 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/17/docs/api/java.management/java/lang/management/ThreadMXBean.html

Spec-Zone.ru

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