Spec-Zone.ru › OpenJDK 24

Интерфейс ThreadMXBean

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

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

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

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

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

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

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

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

Время процессора потока

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

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

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

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

getThreadInfo

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

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

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

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

getThreadInfo

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

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

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

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

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.

getThreadInfo

ThreadInfo[] getThreadInfo(long[] ids, int maxDepth)
Возвращает информацию о каждом потоке, идентификатор которого присутствует в входном массиве 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.

isThreadContentionMonitoringSupported

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

isThreadContentionMonitoringEnabled

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

Включить/выключить мониторинг конкуренции потоков

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

getCurrentThreadCpuTime

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

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

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

getCurrentThreadUserTime

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

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

   getThreadUserTime(Thread.currentThread().threadId());
 
Возвращает:
время работы процессора на уровне пользователя для текущего потока, если текущий поток — системный поток и если измерение времени процессора включено; -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)

Поддерживается ли измерение времени процессора для потоков

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

Поддерживается ли измерение времени процессора для текущего потока

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

Включено ли измерение времени процессора для потоков

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

Включить/выключить измерение времени процессора для потоков

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

findMonitorDeadlockedThreads

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

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

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

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

Возвращает:
массив идентификаторов платформенных потоков, находящихся в тупике монитора, если таковые имеются; null в противном случае.
См. также:
  • findDeadlockedThreads()

resetPeakThreadCount

void resetPeakThreadCount()
Сбрасывает пиковое число потоков до текущего количества живых платформенных потоков.
См. также:
  • getPeakThreadCount()
  • getThreadCount()

findDeadlockedThreads

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

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

Возвращает:
массив идентификаторов платформенных потоков, находящихся в тупике в ожидании мониторов объектов или управляемых синхронизаторов, если таковые имеются; null в противном случае.
Исключения:
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, каждый из которых содержит информацию о потоке, чей идентификатор находится в соответствующем элементе входного массива идентификаторов.
Исключения:
UnsupportedOperationException -
  • если lockedMonitors является true, но виртуальная машина Java не поддерживает мониторинг использования мониторов объектов; или
  • если lockedSynchronizers является true, но виртуальная машина Java не поддерживает мониторинг использования управляемых синхронизаторов.
С:
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 отрицательное.
UnsupportedOperationException -
  • если lockedMonitors равно true, но виртуальная машина Java не поддерживает мониторинг использования мониторов объектов; или
  • если lockedSynchronizers равно true, но виртуальная машина Java не поддерживает мониторинг использования управляемых синхронизаторов.
С:
10
См. также:
  • isObjectMonitorUsageSupported()
  • isSynchronizerUsageSupported()

dumpAllThreads

ThreadInfo[] dumpAllThreads(boolean lockedMonitors, boolean lockedSynchronizers)
Возвращает информацию о всех активных потоках платформы с отслеживанием стека и информацией о синхронизации. ИД потоков виртуальных потоков не включаются. Этот метод эквивалентен вызову:
dumpAllThreads(lockedMonitors, lockedSynchronizers, Integer.MAX_VALUE)
Параметры:
lockedMonitors - если true, вывести все заблокированные мониторы.
lockedSynchronizers - если true, вывести все заблокированные синхронизаторы.
Возвращает:
массив ThreadInfo для всех активных потоков платформы.
Исключения:
UnsupportedOperationException -
  • если lockedMonitors равен true, но виртуальная машина Java не поддерживает мониторинг использования монитора объекта; или
  • если lockedSynchronizers равен true, но виртуальная машина Java не поддерживает мониторинг использования синхронизатора.
С:
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 отрицательное.
UnsupportedOperationException -
  • если lockedMonitors равен true, но виртуальная машина Java не поддерживает мониторинг использования монитора объекта; или
  • если lockedSynchronizers равен true, но виртуальная машина Java не поддерживает мониторинг использования синхронизатора.
С:
10
См. также:
  • isObjectMonitorUsageSupported()
  • isSynchronizerUsageSupported()

Отправить отчет об ошибке или предложить улучшение
Для получения дополнительной информации о справке API и документации разработчика, см. Документацию Java SE, которая содержит более подробные, ориентированные на разработчика описания с концептуальными обзорами, определениями терминов, решениями проблем и примерами рабочего кода. Другие версии.
Java является торговой маркой или зарегистрированной торговой маркой Oracle и/или ее дочерних компаний в США и других странах.
Авторское право © 1993, 2025, Oracle и/или ее дочерние компании, 500 Oracle Parkway, Redwood Shores, CA 94065 США.
Все права защищены. Использование подчиняется лицензионным условиям и политике перераспределения документации.
ПРОЕКТ 24-ea+36-Debian-1

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://download.java.net/java/early_access/jdk24/docs/api/java.management/java/lang/management/ThreadMXBean.html

Spec-Zone.ru

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