Интерфейс 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., Способы доступа к MXBean

Методы

Модификатор и тип Метод Описание
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)

Возвращает информацию о потоке с указанным идентификатором без стека вызовов.

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)

Возвращает информацию о потоке с указанным идентификатором со стеком вызовов заданной длины.

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()

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

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, представляющий информацию о потоке с указанным идентификатором. Стек вызовов, заблокированные мониторы и заблокированные синхронизаторы в возвращаемом объекте ThreadInfo будут пустыми. Если поток с заданным идентификатором не активен или не существует, этот метод вернёт null. Поток считается активным, если он был запущен и еще не завершен.

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

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

getThreadInfo

ThreadInfo[] getThreadInfo(long[] ids)

Возвращает информацию о каждом потоке, идентификатор которого содержится в входном массиве ids без стека вызовов. Этот метод эквивалентен вызову:

getThreadInfo(ids, 0);

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

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

Параметры:
ids — массив идентификаторов потоков.
Возвращает:
массив объектов ThreadInfo, каждый из которых содержит информацию о потоке, идентификатор которого содержится в соответствующем элементе входного массива идентификаторов, без стека вызовов, без информации о заблокированных мониторах и синхронизаторах.
Выбрасывает:
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.

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

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

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

getThreadInfo

ThreadInfo[] getThreadInfo(long[] ids,
                           int maxDepth)

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

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

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

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

Параметры:
ids — массив идентификаторов потоков
maxDepth — максимальное количество элементов в стеке вызовов. Значение Integer.MAX_VALUE можно использовать для запроса всего стека вызовов.
Возвращает:
массив объектов ThreadInfo, каждый из которых содержит информацию о потоке, идентификатор которого содержится в соответствующем элементе входного массива идентификаторов, без информации о заблокированных мониторах и синхронизаторах.
Выбрасывает:
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)

Включает или отключает мониторинг конкуренции потоков. Мониторинг конкуренции потоков отключен по умолчанию.

Параметры:
enable — true для включения; false для отключения.
Выбрасывает:
UnsupportedOperationException — если виртуальная машина Java не поддерживает мониторинг конкуренции потоков.
SecurityException — если существует менеджер безопасности, и вызывающий метод не имеет разрешения ManagementPermission("control").
См. также:
isThreadContentionMonitoringSupported()

getCurrentThreadCpuTime

long getCurrentThreadCpuTime()

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

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

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

getCurrentThreadUserTime

long getCurrentThreadUserTime()

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

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

getThreadUserTime(Thread.currentThread().getId());
Возвращает:
время процессора уровня пользователя для текущего потока, если измерение времени процессора включено; -1 в противном случае.
Выбрасывает:
UnsupportedOperationException - если виртуальная машина Java не поддерживает измерение времени процессора для текущего потока.
См. также:
getCurrentThreadCpuTime(), isCurrentThreadCpuTimeSupported(), isThreadCpuTimeEnabled(), setThreadCpuTimeEnabled(boolean)

getThreadCpuTime

long getThreadCpuTime(long id)

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

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

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

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

getThreadUserTime

long getThreadUserTime(long id)

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

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

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

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

isThreadCpuTimeSupported

boolean isThreadCpuTimeSupported()

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

Возвращает:
true если виртуальная машина Java поддерживает измерение времени процессора для любого потока; false в противном случае.

isCurrentThreadCpuTimeSupported

boolean isCurrentThreadCpuTimeSupported()

Проверяет, поддерживает ли виртуальная машина Java измерение времени процессора для текущего потока. Этот метод возвращает true если isThreadCpuTimeSupported() возвращает true.

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

isThreadCpuTimeEnabled

boolean isThreadCpuTimeEnabled()

Проверяет, включено ли измерение времени процессора потока.

Возвращает:
true если измерение времени процессора потока включено; false в противном случае.
Выбрасывает:
UnsupportedOperationException - если виртуальная машина Java не поддерживает измерение времени процессора ни для других потоков, ни для текущего потока.
См. также:
isThreadCpuTimeSupported(), isCurrentThreadCpuTimeSupported()

setThreadCpuTimeEnabled

void setThreadCpuTimeEnabled(boolean enable)

Включает или отключает измерение времени процессора потока. Значение по умолчанию зависит от платформы.

Параметры:
enable - true включить; false отключить.
Выбрасывает:
UnsupportedOperationException - если виртуальная машина Java не поддерживает измерение времени процессора ни для каких потоков, ни для текущего потока.
SecurityException - если существует диспетчер безопасности, и у вызывающего объекта нет разрешения ManagementPermission("control").
См. также:
isThreadCpuTimeSupported(), isCurrentThreadCpuTimeSupported()

findMonitorDeadlockedThreads

long[] findMonitorDeadlockedThreads()

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

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

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

Этот метод находит тупики, вовлекая только мониторы объектов. Для нахождения тупиков, вовлекая как мониторы объектов, так и собственные синхронизаторы, необходимо использовать метод findDeadlockedThreads.

Возвращает:
массив идентификаторов потоков, которые заблокированы монитором, если таковые имеются; null в противном случае.
Выбрасывает:
SecurityException - если существует диспетчер безопасности, и у вызывающего объекта нет разрешения ManagementPermission("monitor").
См. также:
findDeadlockedThreads()

resetPeakThreadCount

void resetPeakThreadCount()

Сбрасывает максимальное количество потоков до текущего количества активных потоков.

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

findDeadlockedThreads

long[] findDeadlockedThreads()

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

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

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

isObjectMonitorUsageSupported

boolean isObjectMonitorUsageSupported()

Проверяет, поддерживает ли виртуальная машина Java мониторинг использования мониторов объектов.

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

isSynchronizerUsageSupported

boolean isSynchronizerUsageSupported()

Проверяет, поддерживает ли виртуальная машина Java мониторинг использования собственных синхронизаторов.

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

getThreadInfo

ThreadInfo[] getThreadInfo(long[] ids,
                           boolean lockedMonitors,
                           boolean lockedSynchronizers)

Возвращает информацию о потоках для каждого потока, идентификатор которого указан в входном массиве ids, с информацией о стеке вызовов и синхронизации. Это эквивалентно вызову:

getThreadInfo(ids, lockedMonitors, lockedSynchronizers, Integer.MAX_VALUE)

Параметры:
ids - массив идентификаторов потоков.
lockedMonitors - если true, извлекает все заблокированные мониторы.
lockedSynchronizers - если true, извлекает все заблокированные синхронизаторы.
Возвращает:
массив объектов ThreadInfo, каждый из которых содержит информацию о потоке, идентификатор которого указан в соответствующем элементе входного массива идентификаторов.
Исключения:
SecurityException - если менеджер безопасности существует и у вызывающего объекта нет разрешения ManagementPermission("monitor").
UnsupportedOperationException -
С момента:
1.6
См. также:
isObjectMonitorUsageSupported(), isSynchronizerUsageSupported()

getThreadInfo

default ThreadInfo[] getThreadInfo(long[] ids,
                                   boolean lockedMonitors,
                                   boolean lockedSynchronizers,
                                   int maxDepth)

Возвращает информацию о потоках для каждого потока, идентификатор которого указан в входном массиве ids, с информацией о стеке вызовов указанной максимальной длины и синхронизации. Если maxDepth == 0, информация о стеке вызовов потока не будет выведена.

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

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

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

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

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

getThreadInfo(ids, maxDepth)

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

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

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

dumpAllThreads

ThreadInfo[] dumpAllThreads(boolean lockedMonitors,
                            boolean lockedSynchronizers)

Возвращает информацию о всех активных потоках с информацией о стеке вызовов и синхронизации. Это эквивалентно вызову:

dumpAllThreads(lockedMonitors, lockedSynchronizers, Integer.MAX_VALUE)

Параметры:
lockedMonitors - если true, вывести все заблокированные мониторы.
lockedSynchronizers - если true, вывести все заблокированные синхронизаторы.
Возвращает:
массив ThreadInfo для всех активных потоков.
Исключения:
SecurityException - если менеджер безопасности существует и у вызывающего объекта нет разрешения ManagementPermission("monitor").
UnsupportedOperationException -
С момента:
1.6
См. также:
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 -
С момента:
10
См. также:
isObjectMonitorUsageSupported(), isSynchronizerUsageSupported()

© 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/ThreadMXBean.html

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