Интерфейс ThreadMXBean
- Все суперинтерфейсы:
PlatformManagedObject
- Все известные подинтерфейсы:
ThreadMXBean
public interface ThreadMXBean extends PlatformManagedObject
Виртуальная машина 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() для поиска тупиков в работающем приложении.
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
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 измерение времени выполнения на процессоре для текущего потока. |
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, каждый из которых является идентификатором потока. - Исключения:
-
SecurityException- если существует менеджер безопасности и вызывающий объект не имеет права ManagementPermission("monitor").
getThreadInfo
ThreadInfo getThreadInfo(long id)
id без трассировки стека. Этот метод эквивалентен вызову: getThreadInfo(id, 0); Этот метод возвращает объект ThreadInfo, представляющий информацию о потоке с указанным ID. Трассировка стека, заблокированные мониторы и заблокированные синхронизаторы в возвращаемом объекте ThreadInfo будут пустыми. Если поток с заданным ID не активен или не существует, этот метод вернет null. Поток считается активным, если он был запущен и еще не завершен.
Доступ к MBeanServer:
Сопоставленный тип ThreadInfo - это CompositeData с атрибутами, как указано в методе ThreadInfo.from.
- Параметры:
-
id- идентификатор потока. Должен быть положительным. - Возвращает:
- объект
ThreadInfoдля потока с заданным ID без трассировки стека, без информации о заблокированных мониторах и синхронизаторах;nullесли поток с заданным ID не активен или не существует. - Исключения:
-
IllegalArgumentException- еслиid <= 0. -
SecurityException- если существует менеджер безопасности и вызывающий объект не имеет права ManagementPermission("monitor").
getThreadInfo
ThreadInfo[] getThreadInfo(long[] ids)
ids без трассировки стека. Этот метод эквивалентен вызову: getThreadInfo(ids, 0);
Этот метод возвращает массив объектов ThreadInfo. Трассировка стека, заблокированные мониторы и заблокированные синхронизаторы в каждом объекте ThreadInfo будут пустыми. Если поток с заданным ID не активен или не существует, соответствующий элемент в возвращаемом массиве будет содержать null. Поток считается активным, если он был запущен и еще не завершен.
Доступ к MBeanServer:
Сопоставленный тип ThreadInfo - это CompositeData с атрибутами, как указано в методе ThreadInfo.from.
- Параметры:
-
ids- массив идентификаторов потоков. - Возвращает:
- массив объектов
ThreadInfo, каждый из которых содержит информацию о потоке, чей ID находится в соответствующем элементе входного массива ID без трассировки стека, без информации о заблокированных мониторах и синхронизаторах. - Исключения:
-
IllegalArgumentException- если любой элемент во входном массивеidsявляется<= 0. -
SecurityException- если существует менеджер безопасности и вызывающий объект не имеет права ManagementPermission("monitor").
getThreadInfo
ThreadInfo getThreadInfo(long id, int maxDepth)
id, с трассировкой стека указанного количества элементов. Параметр maxDepth указывает максимальное количество элементов StackTraceElement, которые необходимо получить из трассировки стека. Если maxDepth == Integer.MAX_VALUE, будет выгружена вся трассировка стека потока. Если maxDepth == 0, трассировка стека потока выгружаться не будет. Этот метод не получает заблокированные мониторы и заблокированные синхронизаторы потока. Когда виртуальная машина Java не имеет информации о трассировке стека потока или maxDepth == 0, трассировка стека в объекте ThreadInfo будет пустым массивом StackTraceElement.
Если поток с заданным ID не активен или не существует, этот метод вернет null. Поток считается активным, если он был запущен и еще не завершен.
Доступ к MBeanServer:
Сопоставленный тип ThreadInfo - это CompositeData с атрибутами, как указано в методе ThreadInfo.from.
- Параметры:
-
id- идентификатор потока. Должен быть положительным. -
maxDepth- максимальное количество записей в трассировке стека для выгрузки.Integer.MAX_VALUEможет использоваться для запроса выгрузки всего стека. - Возвращает:
- объект
ThreadInfoдля потока с заданным ID без информации о заблокированных мониторах и синхронизаторах.nullесли поток с заданным ID не активен или не существует. - Исключения:
-
IllegalArgumentException- еслиid <= 0. -
IllegalArgumentException- еслиmaxDepth is negative. -
SecurityException- если существует менеджер безопасности и вызывающий объект не имеет права ManagementPermission("monitor").
getThreadInfo
ThreadInfo[] getThreadInfo(long[] ids, int maxDepth)
ids, с трассировкой стека указанного количества элементов. Параметр maxDepth указывает максимальное количество элементов StackTraceElement, которые необходимо получить из трассировки стека. Если maxDepth == Integer.MAX_VALUE, будет выгружена вся трассировка стека потока. Если maxDepth == 0, трассировка стека потока выгружаться не будет. Этот метод не получает заблокированные мониторы и заблокированные синхронизаторы потоков. Когда виртуальная машина Java не имеет информации о трассировке стека потока или maxDepth == 0, трассировка стека в объекте ThreadInfo будет пустым массивом StackTraceElement.
Этот метод возвращает массив объектов ThreadInfo, каждый из которых представляет информацию о потоке с тем же индексом, что и во входном массиве ids. Если поток с заданным ID не активен или не существует, null будет установлен в соответствующий элемент возвращаемого массива. Поток считается активным, если он был запущен и еще не завершен.
Доступ к MBeanServer:
Сопоставленный тип ThreadInfo - это CompositeData с атрибутами, как указано в методе ThreadInfo.from.
- Параметры:
-
ids- массив идентификаторов потоков -
maxDepth- максимальное количество записей в трассировке стека для выгрузки.Integer.MAX_VALUEможет использоваться для запроса выгрузки всего стека. - Возвращает:
- массив объектов
ThreadInfo, каждый из которых содержит информацию о потоке, чей ID находится в соответствующем элементе входного массива ID без информации о заблокированных мониторах и синхронизаторах. - Исключения:
-
IllegalArgumentException- еслиmaxDepth is negative. -
IllegalArgumentException- если любой элемент во входном массивеidsявляется<= 0. -
SecurityException- если существует менеджер безопасности и вызывающий объект не имеет права ManagementPermission("monitor").
isThreadContentionMonitoringSupported
boolean isThreadContentionMonitoringSupported()
- Возвращает:
-
trueесли виртуальная машина Java поддерживает мониторинг конкуренции потоков;falseв противном случае.
isThreadContentionMonitoringEnabled
boolean isThreadContentionMonitoringEnabled()
- Возвращает:
-
trueесли мониторинг конкуренции потоков включен;falseв противном случае. - Исключения:
-
UnsupportedOperationException- если виртуальная машина Java не поддерживает мониторинг конкуренции потоков. - См. также:
setThreadContentionMonitoringEnabled
void setThreadContentionMonitoringEnabled(boolean enable)
- Parameters:
-
enable-trueдля включения;falseдля отключения. - Throws:
-
UnsupportedOperationException- если виртуальная машина Java не поддерживает мониторинг конкуренции потоков. -
SecurityException- если существует менеджер безопасности, и вызывающий элемент не имеет разрешения ManagementPermission("control"). - See Also:
getCurrentThreadCpuTime
long getCurrentThreadCpuTime()
Этот метод предназначен для удобства локального управления и эквивалентен вызову:
getThreadCpuTime(Thread.currentThread().getId());
- Returns:
- общее время выполнения текущего потока, если измерение времени ЦП включено;
-1в противном случае. - Throws:
-
UnsupportedOperationException- если виртуальная машина Java не поддерживает измерение времени ЦП для текущего потока. - See Also:
getCurrentThreadUserTime
long getCurrentThreadUserTime()
Этот метод предназначен для удобства локального управления и эквивалентен вызову:
getThreadUserTime(Thread.currentThread().getId());
- Returns:
- время ЦП на уровне пользователя для текущего потока, если измерение времени ЦП включено;
-1в противном случае. - Throws:
-
UnsupportedOperationException- если виртуальная машина Java не поддерживает измерение времени ЦП для текущего потока. - See Also:
getThreadCpuTime
long getThreadCpuTime(long id)
Если поток с заданным идентификатором не активен или не существует, этот метод возвращает -1. Если измерение времени ЦП отключено, этот метод возвращает -1. Поток считается активным, если он запущен и еще не завершился.
Если измерение времени ЦП включено после запуска потока, реализация виртуальной машины Java может выбрать любой момент времени до и включая время включения этой возможности в качестве точки начала измерения времени ЦП.
- Parameters:
-
id- идентификатор потока - Returns:
- общее время выполнения потока с заданным идентификатором, если поток с заданным идентификатором существует, поток активен и измерение времени ЦП включено;
-1в противном случае. - Throws:
-
IllegalArgumentException- еслиid <= 0. -
UnsupportedOperationException- если виртуальная машина Java не поддерживает измерение времени ЦП для других потоков. - See Also:
getThreadUserTime
long getThreadUserTime(long id)
Если поток с заданным идентификатором не активен или не существует, этот метод возвращает -1. Если измерение времени ЦП отключено, этот метод возвращает -1. Поток считается активным, если он запущен и еще не завершился.
Если измерение времени ЦП включено после запуска потока, реализация виртуальной машины Java может выбрать любой момент времени до и включая время включения этой возможности в качестве точки начала измерения времени ЦП.
- Parameters:
-
id- идентификатор потока - Returns:
- время ЦП на уровне пользователя для потока с заданным идентификатором, если поток с заданным идентификатором существует, поток активен и измерение времени ЦП включено;
-1в противном случае. - Throws:
-
IllegalArgumentException- еслиid <= 0. -
UnsupportedOperationException- если виртуальная машина Java не поддерживает измерение времени ЦП для других потоков. - See Also:
isThreadCpuTimeSupported
boolean isThreadCpuTimeSupported()
- Returns:
-
trueесли виртуальная машина Java поддерживает измерение времени ЦП для любого потока;falseв противном случае.
isCurrentThreadCpuTimeSupported
boolean isCurrentThreadCpuTimeSupported()
true если isThreadCpuTimeSupported() возвращает true.- Returns:
-
trueесли виртуальная машина Java поддерживает измерение времени ЦП для текущего потока;falseв противном случае.
isThreadCpuTimeEnabled
boolean isThreadCpuTimeEnabled()
- Returns:
-
trueесли измерение времени ЦП для потока включено;falseв противном случае. - Throws:
-
UnsupportedOperationException- если виртуальная машина Java не поддерживает измерение времени ЦП ни для других потоков, ни для текущего потока. - See Also:
setThreadCpuTimeEnabled
void setThreadCpuTimeEnabled(boolean enable)
- Parameters:
-
enable-trueдля включения;falseдля отключения. - Throws:
-
UnsupportedOperationException- если виртуальная машина Java не поддерживает измерение времени ЦП ни для каких потоков, ни для текущего потока. -
SecurityException- если существует менеджер безопасности, и вызывающий элемент не имеет разрешения ManagementPermission("control"). - See Also:
findMonitorDeadlockedThreads
long[] findMonitorDeadlockedThreads()
Object.wait, где каждый поток владеет одним монитором, пытаясь получить другой монитор, уже удерживаемый другим потоком в цикле. Более формально, поток находится в мониторном тупике, если он входит в цикл в отношении "ожидает монитор объекта, которым владеет". В простейшем случае поток A заблокирован в ожидании монитора, которым владеет поток B, а поток B заблокирован в ожидании монитора, которым владеет поток A.
Этот метод предназначен для использования в целях отладки, а не для управления синхронизацией. Он может быть дорогостоящим.
Этот метод находит тупики, связанные только с мониторами объектов. Чтобы найти тупики, включающие как мониторы объектов, так и ownable synchronizers, следует использовать метод findDeadlockedThreads.
- Returns:
- массив идентификаторов потоков, находящихся в мониторном тупике, если таковые имеются;
nullв противном случае. - Throws:
-
SecurityException- если существует менеджер безопасности, и вызывающий элемент не имеет разрешения ManagementPermission("monitor"). - See Also:
resetPeakThreadCount
void resetPeakThreadCount()
- Throws:
-
SecurityException- если существует менеджер безопасности, и у вызывающего объекта нет разрешения ManagementPermission("control"). - See Also:
findDeadlockedThreads
long[] findDeadlockedThreads()
Этот метод предназначен для отладки, но не для управления синхронизацией. Он может быть ресурсоёмким.
- Returns:
- массив идентификаторов потоков, которые находятся в тупике, ожидая мониторов объектов или включенных синхронизаторов, если таковые имеются;
nullв противном случае. - Throws:
-
SecurityException- если существует менеджер безопасности, и у вызывающего объекта нет разрешения ManagementPermission("monitor"). -
UnsupportedOperationException- если виртуальная машина Java не поддерживает мониторинг использования включенных синхронизаторов. - Since:
- 1.6
- See Also:
isObjectMonitorUsageSupported
boolean isObjectMonitorUsageSupported()
- Returns:
-
trueесли виртуальная машина Java поддерживает мониторинг использования мониторов объектов;falseв противном случае. - Since:
- 1.6
- See Also:
isSynchronizerUsageSupported
boolean isSynchronizerUsageSupported()
- Returns:
-
trueесли виртуальная машина Java поддерживает мониторинг использования включенных синхронизаторов;falseв противном случае. - Since:
- 1.6
- See Also:
getThreadInfo
ThreadInfo[] getThreadInfo(long[] ids, boolean lockedMonitors, boolean lockedSynchronizers)
ids, со стековым следом и информацией о синхронизации. Это эквивалентно вызову: getThreadInfo(ids, lockedMonitors, lockedSynchronizers, Integer.MAX_VALUE)
- Parameters:
-
ids- массив идентификаторов потоков. -
lockedMonitors- еслиtrue, извлекает все заблокированные мониторы. -
lockedSynchronizers- еслиtrue, извлекает все заблокированные включенные синхронизаторы. - Returns:
- массив объектов
ThreadInfo, каждый из которых содержит информацию о потоке, чей идентификатор находится в соответствующем элементе входного массива идентификаторов. - Throws:
-
SecurityException- если существует менеджер безопасности, и у вызывающего объекта нет разрешения ManagementPermission("monitor"). -
UnsupportedOperationException-- если
lockedMonitorsравноtrue, но виртуальная машина Java не поддерживает мониторинг использования монитора объектов; или - если
lockedSynchronizersравноtrue, но виртуальная машина Java не поддерживает мониторинг использования включенных синхронизаторов.
- если
- Since:
- 1.6
- See Also:
getThreadInfo
default ThreadInfo[] getThreadInfo(long[] ids, boolean lockedMonitors, boolean lockedSynchronizers, int maxDepth)
ids, со стековым следом заданной максимальной длины и информацией о синхронизации. Если maxDepth == 0, стековый след потока не будет выведен. Этот метод получает моментальный снимок информации о каждом потоке, включая:
- стековый след заданной максимальной длины,
- мониторы объектов, которые в данный момент заблокированы потоком, если
lockedMonitorsравноtrue, и - включенные синхронизаторы, которые в данный момент заблокированы потоком, если
lockedSynchronizersравноtrue.
Этот метод возвращает массив объектов ThreadInfo, каждый из которых содержит информацию о потоке с тем же индексом, что и в массиве ids. Если поток с заданным ID не активен или не существует, null будет установлено в соответствующем элементе возвращаемого массива. Поток считается активным, если он был запущен и еще не завершен.
Если поток не блокирует ни один монитор объекта, или lockedMonitors равно false, возвращаемый объект ThreadInfo будет иметь пустой массив MonitorInfo. Аналогично, если поток не блокирует ни один синхронизатор или lockedSynchronizers равно false, возвращаемый объект ThreadInfo будет иметь пустой массив LockInfo.
Когда оба параметра lockedMonitors и lockedSynchronizers равны false, это эквивалентно вызову:
getThreadInfo(ids, maxDepth)
Этот метод предназначен для отладки, но не для управления синхронизацией. Он может быть ресурсоёмким.
Доступ к MBeanServer:
Картируемый тип ThreadInfo – CompositeData с атрибутами, как указано в методе ThreadInfo.from.
- Implementation Requirements:
- Встроенная реализация выбрасывает
UnsupportedOperationException. - Parameters:
-
ids- массив идентификаторов потоков. -
lockedMonitors- еслиtrue, извлекает все заблокированные мониторы. -
lockedSynchronizers- еслиtrue, извлекает все заблокированные включенные синхронизаторы. -
maxDepth- указывает максимальное количествоStackTraceElementдля извлечения из стекового следа. - Returns:
- массив объектов
ThreadInfo, каждый из которых содержит информацию о потоке, чей идентификатор находится в соответствующем элементе входного массива идентификаторов. - Throws:
-
IllegalArgumentException- еслиmaxDepthотрицательно. -
SecurityException- если существует менеджер безопасности, и у вызывающего объекта нет разрешения ManagementPermission("monitor"). -
UnsupportedOperationException-- если
lockedMonitorsравноtrue, но виртуальная машина Java не поддерживает мониторинг использования монитора объектов; или - если
lockedSynchronizersравноtrue, но виртуальная машина Java не поддерживает мониторинг использования включенных синхронизаторов.
- если
- Since:
- 10
- See Also:
dumpAllThreads
ThreadInfo[] dumpAllThreads(boolean lockedMonitors, boolean lockedSynchronizers)
dumpAllThreads(lockedMonitors, lockedSynchronizers, Integer.MAX_VALUE)
- Parameters:
-
lockedMonitors- еслиtrue, вывести все заблокированные мониторы. -
lockedSynchronizers- еслиtrue, вывести все заблокированные включенные синхронизаторы. - Returns:
- массив
ThreadInfoдля всех активных потоков. - Throws:
-
SecurityException- если существует менеджер безопасности, и у вызывающего объекта нет разрешения ManagementPermission("monitor"). -
UnsupportedOperationException-- если
lockedMonitorsравноtrue, но виртуальная машина Java не поддерживает мониторинг использования монитора объектов; или - если
lockedSynchronizersравноtrue, но виртуальная машина Java не поддерживает мониторинг использования включенных синхронизаторов.
- если
- Since:
- 1.6
- See Also:
dumpAllThreads
default ThreadInfo[] dumpAllThreads(boolean lockedMonitors, boolean lockedSynchronizers, int maxDepth)
maxDepth == 0, стековый след потока не будет выведен. Некоторые потоки, включенные в возвращаемый массив, могут быть завершены к моменту возврата этого метода. Этот метод возвращает массив объектов ThreadInfo, как указано в методе getThreadInfo(long[], boolean, boolean, int).
- Требования к реализации:
- В стандартной реализации выбрасывается
UnsupportedOperationException. - Параметры:
-
lockedMonitors- еслиtrue, вывести все заблокированные мониторы. -
lockedSynchronizers- еслиtrue, вывести все заблокированные синхронизаторы. -
maxDepth- указывает максимальное количествоStackTraceElementдля извлечения из стекового следа. - Возвращает:
- массив
ThreadInfoдля всех активных потоков. - Исключения:
-
IllegalArgumentException- еслиmaxDepthотрицательно. -
SecurityException- если менеджер безопасности существует и у вызывающего объекта нет разрешения ManagementPermission("monitor"). -
UnsupportedOperationException-- если
lockedMonitorsравноtrue, но виртуальная машина Java не поддерживает мониторинг использования объектных мониторов; или - если
lockedSynchronizersравноtrue, но виртуальная машина Java не поддерживает мониторинг использования синхронизаторов.
- если
- С:
- 10
- См. также:
© 1993, 2021, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/17/docs/api/java.management/java/lang/management/ThreadMXBean.html