Интерфейс ThreadMXBean
- Все суперинтерфейсы:
PlatformManagedObject
- Все известные подинтерфейсы:
ThreadMXBean
public interface ThreadMXBean extends PlatformManagedObject
ThreadMXBean поддерживает мониторинг и управление платформенными потоками в виртуальной машине Java. Платформенные потоки обычно сопоставляются с потоками ядра, планируемыми операционной системой. ThreadMXBean не поддерживает мониторинг и управление виртуальными потоками.
Виртуальная машина 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 |
Возвращает информацию о потоках для всех работающих платформенных потоков, включая трассировки стека, ограниченные указанным максимальным числом элементов, и сведения о синхронизации. Если maxDepth == 0, трассировка стека потока не будет выгружена. |
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 |
Включает или отключает измерение процессорного времени потоков. |
Методы, объявленные в интерфейсе 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, каждый из которых содержит информацию о потоке с идентификатором, находящимся в соответствующем элементе входного массива идентификаторов, без трассировки стека, заблокированного монитора и информации о синхронизаторах. - Выбрасывает:
-
IllegalArgumentException— если любой элемент входного массиваidsявляется<= 0.
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.
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.
isThreadContentionMonitoringSupported
boolean isThreadContentionMonitoringSupported()
- Возвращает:
-
true, если виртуальная машина Java поддерживает мониторинг конкуренции потоков; в противном случае —false.
isThreadContentionMonitoringEnabled
boolean isThreadContentionMonitoringEnabled()
- Возвращает:
-
true, если мониторинг конкуренции потоков включён; в противном случае —false. - Выбрасывает:
-
UnsupportedOperationException— если виртуальная машина Java не поддерживает мониторинг конкуренции потоков. - См. также:
setThreadContentionMonitoringEnabled
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 не поддерживает измерение времени ЦП для других потоков. - См. также:
isThreadCpuTimeSupported
boolean isThreadCpuTimeSupported()
- Возвращает:
-
true, если виртуальная машина Java поддерживает измерение времени ЦП для любого платформенного потока; в противном случае —false.
isCurrentThreadCpuTimeSupported
boolean isCurrentThreadCpuTimeSupported()
getCurrentThreadCpuTime() и getCurrentThreadUserTime(). Этот метод возвращает true, если isThreadCpuTimeSupported() возвращает true.- Возвращает:
-
true, если виртуальная машина Java поддерживает измерение времени ЦП для текущего платформенного потока; в противном случае —false.
isThreadCpuTimeEnabled
boolean isThreadCpuTimeEnabled()
- Возвращает:
-
true, если измерение времени ЦП потоков включено; в противном случае —false. - Выбрасывает:
-
UnsupportedOperationException— если виртуальная машина Java не поддерживает измерение времени ЦП ни для других потоков, ни для текущего потока. - См. также:
setThreadCpuTimeEnabled
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://docs.oracle.com/en/java/javase/25/docs/api/java.management/java/lang/management/ThreadMXBean.html