Интерфейс 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, возвращаемое методом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
- См. также:
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
ThreadInfo[] |
dumpAllThreads |
Возвращает информацию о потоках всех активных потоков платформы с отслеживанием стека и информацией о синхронизации. |
default ThreadInfo[] |
dumpAllThreads |
Возвращает информацию о потоках всех активных потоков платформы с отслеживанием стека указанной максимальной длины и информацией о синхронизации. |
long[] |
findDeadlockedThreads() |
Находит циклы потоков платформы, которые находятся в тупике, ожидая получения мониторов объектов или синхронизаторов с правом владения. |
long[] |
findMonitorDeadlockedThreads() |
Находит циклы потоков платформы, которые находятся в тупике, ожидая получения мониторов объектов. |
long[] |
getAllThreadIds() |
Возвращает идентификаторы потоков всех активных потоков платформы. |
long |
getCurrentThreadCpuTime() |
Возвращает общее время работы текущего потока в наносекундах. |
long |
getCurrentThreadUserTime() |
Возвращает время работы текущего потока в пользовательском режиме в наносекундах. |
int |
getDaemonThreadCount() |
Возвращает текущее количество активных потоков платформы, которые являются демонами. |
int |
getPeakThreadCount() |
Возвращает максимальное количество активных потоков платформы с момента запуска или сброса пика виртуальной машины Java. |
int |
getThreadCount() |
Возвращает текущее количество активных потоков платформы, включая как демоны, так и обычные потоки. |
long |
getThreadCpuTime |
Возвращает общее время работы потока с указанным идентификатором в наносекундах. |
ThreadInfo |
getThreadInfo |
Возвращает информацию о потоке с указанным id без отслеживания стека. |
ThreadInfo[] |
getThreadInfo |
Возвращает информацию о каждом потоке, идентификатор которого находится в входном массиве ids без отслеживания стека. |
ThreadInfo[] |
getThreadInfo |
Возвращает информацию о каждом потоке, идентификатор которого находится в входном массиве ids, с отслеживанием стека и информацией о синхронизации. |
default ThreadInfo[] |
getThreadInfo |
Возвращает информацию о каждом потоке, идентификатор которого находится в входном массиве ids, с отслеживанием стека указанной максимальной длины и информацией о синхронизации. |
ThreadInfo[] |
getThreadInfo |
Возвращает информацию о каждом потоке, идентификатор которого находится в входном массиве ids, с отслеживанием стека заданного количества элементов стека. |
ThreadInfo |
getThreadInfo |
Возвращает информацию о потоке с указанным id, с отслеживанием стека заданного количества элементов стека. |
long |
getThreadUserTime |
Возвращает время работы потока с указанным идентификатором в пользовательском режиме в наносекундах. |
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 |
Включает или выключает мониторинг конкуренции потоков. |
void |
setThreadCpuTimeEnabled |
Включает или выключает измерение времени процессора потоков. |
Методы, объявленные в интерфейсе java.lang.management.PlatformManagedObject
getObjectName
Подробное описание методов
getThreadCount
int getThreadCount()
- Возвращает:
- текущее количество активных потоков платформы.
getPeakThreadCount
int getPeakThreadCount()
- Возвращает:
- максимальное количество активных потоков платформы.
getTotalStartedThreadCount
long getTotalStartedThreadCount()
- Возвращает:
- общее количество запущенных потоков платформы.
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()
- Возвращает:
-
true, если виртуальная машина Java поддерживает мониторинг конкуренции потоков;falseв противном случае.
isThreadContentionMonitoringEnabled
boolean isThreadContentionMonitoringEnabled()
- Возвращает:
-
true, если мониторинг конкуренции потоков включён;falseв противном случае. - Исключения:
-
UnsupportedOperationException— если виртуальная машина Java не поддерживает мониторинг конкуренции потоков. - См. также:
Включить/выключить мониторинг конкуренции потоков
void setThreadContentionMonitoringEnabled(boolean enable)
- Параметры:
-
enable-trueдля включения;falseдля отключения. - Исключения:
-
UnsupportedOperationException- если виртуальная машина Java не поддерживает мониторинг конкуренции потоков. - См. также:
getCurrentThreadCpuTime
long getCurrentThreadCpuTime()
Это удобный метод для локального управления и эквивалентен вызову:
getThreadCpuTime(Thread.currentThread().threadId());
- Возвращает:
- общее время работы процессора текущего потока, если текущий поток — системный поток и если измерение времени процессора включено;
-1в противном случае. - Исключения:
-
UnsupportedOperationException- если виртуальная машина Java не поддерживает измерение времени процессора для текущего потока. - См. также:
getCurrentThreadUserTime
long getCurrentThreadUserTime()
Это удобный метод для локального управления и эквивалентен вызову:
getThreadUserTime(Thread.currentThread().threadId());
- Возвращает:
- время работы процессора на уровне пользователя для текущего потока, если текущий поток — системный поток и если измерение времени процессора включено;
-1в противном случае. - Исключения:
-
UnsupportedOperationException- если виртуальная машина Java не поддерживает измерение времени процессора для текущего потока. - См. также:
getThreadCpuTime
long getThreadCpuTime(long id)
Если поток с указанным идентификатором является виртуальным потоком, не активен или не существует, этот метод возвращает -1. Если измерение времени процессора отключено, этот метод возвращает -1. Поток активен, если он был запущен и еще не завершен.
Если измерение времени процессора включено после запуска потока, реализация виртуальной машины Java может выбрать любое время вплоть до и включая момент включения возможности как точку начала измерения времени процессора.
- Параметры:
-
id- идентификатор потока - Возвращает:
- общее время работы процессора для потока с указанным идентификатором, если поток с указанным идентификатором — системный поток, поток активен, и измерение времени процессора включено;
-1в противном случае. - Исключения:
-
IllegalArgumentException- еслиid <= 0. -
UnsupportedOperationException- если виртуальная машина Java не поддерживает измерение времени процессора для других потоков. - См. также:
getThreadUserTime
long getThreadUserTime(long id)
Если поток с указанным идентификатором является виртуальным потоком, не активен или не существует, этот метод возвращает -1. Если измерение времени процессора отключено, этот метод возвращает -1. Поток активен, если он был запущен и еще не завершен.
Если измерение времени процессора включено после запуска потока, реализация виртуальной машины Java может выбрать любое время вплоть до и включая момент включения возможности как точку начала измерения времени процессора.
- Параметры:
-
id- идентификатор потока - Возвращает:
- время работы процессора на уровне пользователя для потока с указанным идентификатором, если поток с указанным идентификатором — системный поток, поток активен, и измерение времени процессора включено;
-1в противном случае. - Исключения:
-
IllegalArgumentException- еслиid <= 0. -
UnsupportedOperationException- если виртуальная машина Java не поддерживает измерение времени процессора для других потоков. - См. также:
Поддерживается ли измерение времени процессора для потоков
boolean isThreadCpuTimeSupported()
- Возвращает:
-
true, если виртуальная машина Java поддерживает измерение времени процессора для любого системного потока;falseв противном случае.
Поддерживается ли измерение времени процессора для текущего потока
boolean isCurrentThreadCpuTimeSupported()
getCurrentThreadCpuTime() и getCurrentThreadUserTime(). Этот метод возвращает true, если isThreadCpuTimeSupported() возвращает true.- Возвращает:
-
true, если виртуальная машина Java поддерживает измерение времени процессора для текущего системного потока;falseв противном случае.
Включено ли измерение времени процессора для потоков
boolean isThreadCpuTimeEnabled()
- Возвращает:
-
true, если измерение времени процессора для потоков включено;falseв противном случае. - Исключения:
-
UnsupportedOperationException- если виртуальная машина Java не поддерживает измерение времени процессора ни для других потоков, ни для текущего потока. - См. также:
Включить/выключить измерение времени процессора для потоков
void setThreadCpuTimeEnabled(boolean enable)
- Параметры:
-
enable-trueдля включения;falseдля отключения. - Исключения:
-
UnsupportedOperationException- если виртуальная машина Java не поддерживает измерение времени процессора ни для каких потоков, ни для текущего потока. - См. также:
findMonitorDeadlockedThreads
long[] findMonitorDeadlockedThreads()
Object.wait, где каждый платформенный поток владеет одним монитором, пытаясь получить другой монитор, уже удерживаемый другим платформенным потоком в цикле. Циклы, включающие виртуальные потоки, этим методом не обнаруживаются. Более формально, поток считается заблокированным монитором, если он участвует в цикле в отношении «ожидает монитор объекта, которым владеет». В простейшем случае поток A заблокирован в ожидании монитора, которым владеет поток B, а поток B заблокирован в ожидании монитора, которым владеет поток A.
Этот метод предназначен для использования в процессе устранения неполадок, но не для управления синхронизацией. Он может быть ресурсоёмким.
Этот метод находит тупики, затрагивающие только мониторы объектов. Для поиска тупиков, затрагивающих как мониторы объектов, так и управляемые синхронизаторы, следует использовать метод findDeadlockedThreads.
- Возвращает:
- массив идентификаторов платформенных потоков, находящихся в тупике монитора, если таковые имеются;
nullв противном случае. - См. также:
resetPeakThreadCount
void resetPeakThreadCount()
- См. также:
findDeadlockedThreads
long[] findDeadlockedThreads()
Этот метод предназначен для использования в процессе устранения неполадок, но не для управления синхронизацией. Он может быть ресурсоёмким.
- Возвращает:
- массив идентификаторов платформенных потоков, находящихся в тупике в ожидании мониторов объектов или управляемых синхронизаторов, если таковые имеются;
nullв противном случае. - Исключения:
-
UnsupportedOperationException- если виртуальная машина Java не поддерживает мониторинг использования управляемых синхронизаторов. - С:
- 1.6
- См. также:
isObjectMonitorUsageSupported
boolean isObjectMonitorUsageSupported()
- Возвращает:
-
true, если виртуальная машина Java поддерживает мониторинг использования мониторов объектов;falseв противном случае. - С:
- 1.6
- См. также:
isSynchronizerUsageSupported
boolean isSynchronizerUsageSupported()
- Возвращает:
-
true, если виртуальная машина Java поддерживает мониторинг использования управляемых синхронизаторов;falseв противном случае. - С:
- 1.6
- См. также:
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
- См. также:
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
- См. также:
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
- См. также:
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
- См. также:
© 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