Spec-Zone .ru
спецификации, руководства, описания, API
|
public interface ThreadMXBean extends PlatformManagedObject
У виртуальной машины Java есть единственный экземпляр реализации class этого интерфейса. Этот экземпляр, реализовывая этот интерфейс является MXBean, который может быть получен, вызывая ManagementFactory.getThreadMXBean()
метод или от platform MBeanServer
метод.
ObjectName для однозначного определения MXBean для системы потока в пределах MBeanServer:
java.lang:type=Threading
Это может быть получено, вызывая PlatformManagedObject.getObjectName()
метод. Thread.getId()
метод для потока. ID потока уникален во время своего времени жизни. Когда поток завершается, этот ID потока может быть снова использован. Некоторые методы в этом интерфейсе берут ID потока или массив ID потока как входной параметр и возвращают информацию на поток.
isThreadCpuTimeSupported()
метод может использоваться, чтобы определить, поддерживает ли виртуальная машина Java измерение процессорного времени для какого-либо потока. isCurrentThreadCpuTimeSupported()
метод может использоваться, чтобы определить, поддерживает ли виртуальная машина Java измерение процессорного времени для текущего потока. Реализация виртуальной машины Java, которая поддерживает измерение процессорного времени для любого потока, будет также поддерживать это для текущего потока.
У процессорного времени, обеспеченного этим интерфейсом, есть точность наносекунды, но не обязательно точность наносекунды.
Виртуальная машина Java может отключить измерение процессорного времени по умолчанию. isThreadCpuTimeEnabled()
и setThreadCpuTimeEnabled(boolean)
методы могут использоваться, чтобы протестировать, если измерение процессорного времени включается и позволять/отключать этой поддержке соответственно. Включение измерению ЦП потока могло быть дорогим в некоторых реализациях виртуальной машины Java.
isThreadContentionMonitoringSupported()
метод может использоваться, чтобы определить, поддерживает ли виртуальная машина Java контроль конкуренции потока. Контроль конкуренции потока отключается по умолчанию. setThreadContentionMonitoringEnabled(boolean)
метод может использоваться, чтобы включить контролю конкуренции потока.
getThreadInfo(long[], boolean, boolean)
и dumpAllThreads(boolean, boolean)
методы могут использоваться, чтобы получить трассировку стека потока и информацию о синхронизации, включая которую блокировку поток блокируется, чтобы получить или ожидающий на и который блокирует поток, в настоящий момент имеет. Интерфейс ThreadMXBean обеспечивает findMonitorDeadlockedThreads()
и findDeadlockedThreads()
методы, чтобы найти мертвые блокировки в рабочем приложении.
ManagementFactory.getPlatformMXBeans(Class)
, Спецификация JMX., Способы Получить доступ к MXBeansМодификатор и Тип | Метод и Описание |
---|---|
ThreadInfo[] |
dumpAllThreads(boolean lockedMonitors, boolean lockedSynchronizers)
Возвращает информацию потока для всех живых потоков с трассировкой стека и информацией о синхронизации.
|
long[] |
findDeadlockedThreads()
Находит циклы потоков, которые находятся в мертвой блокировке, ожидающей, чтобы получить объектные мониторы или ownable синхронизаторы.
|
long[] |
findMonitorDeadlockedThreads()
Находит циклы потоков, которые находятся в мертвой блокировке, ожидающей, чтобы получить объектные мониторы.
|
long[] |
getAllThreadIds()
Возвраты все живые ID потока.
|
long |
getCurrentThreadCpuTime()
Возвращает полное процессорное время для текущего потока в наносекундах.
|
long |
getCurrentThreadUserTime()
Возвращает процессорное время, которое текущий поток выполнил в непривилегированном режиме в наносекундах.
|
int |
getDaemonThreadCount()
Возвращает текущее число живых потоков демона.
|
int |
getPeakThreadCount()
Возвращает пиковое живое количество потока, так как запущенная виртуальная машина Java или пик была сброшена.
|
int |
getThreadCount()
Возвращает текущее число живых потоков и включая демона и включая потоки недемона.
|
long |
getThreadCpuTime(long id)
Возвращает полное процессорное время для потока указанного ID в наносекундах.
|
ThreadInfo |
getThreadInfo(long id)
Возвращает информацию потока для потока указанного id без трассировки стека.
|
ThreadInfo[] |
getThreadInfo(long[] ids)
Возвращает информацию потока для каждого потока, ID которого находится во входном массиве ids без трассировки стека.
|
ThreadInfo[] |
getThreadInfo(long[] ids, boolean lockedMonitors, boolean lockedSynchronizers)
Возвращает информацию потока для каждого потока, ID которого находится во входном массиве ids с трассировкой стека и информацией о синхронизации.
|
ThreadInfo[] |
getThreadInfo(long[] ids, int maxDepth)
Возвращает информацию потока для каждого потока, ID которого находится во входном массиве ids с трассировкой стека конкретного количества микроэлементов стека.
|
ThreadInfo |
getThreadInfo(long id, int maxDepth)
Возвращает информацию потока для потока указанного id, с трассировкой стека конкретного количества микроэлементов стека.
|
long |
getThreadUserTime(long id)
Возвращает процессорное время, которое поток указанного ID выполнил в непривилегированном режиме в наносекундах.
|
long |
getTotalStartedThreadCount()
Возвращает общее количество создаваемых потоков и также запущенный начиная с запущенной виртуальной машины Java.
|
boolean |
isCurrentThreadCpuTimeSupported()
Тесты, если виртуальная машина Java поддерживает измерение процессорного времени для текущего потока.
|
boolean |
isObjectMonitorUsageSupported()
Тесты, если виртуальная машина Java поддерживает контроль объектного использования монитора.
|
boolean |
isSynchronizerUsageSupported()
Тесты, если виртуальная машина Java поддерживает контроль ownable использования синхронизатора.
|
boolean |
isThreadContentionMonitoringEnabled()
Тесты, если контроль конкуренции потока включается.
|
boolean |
isThreadContentionMonitoringSupported()
Тесты, если виртуальная машина Java поддерживает контроль конкуренции потока.
|
boolean |
isThreadCpuTimeEnabled()
Тесты, если измерение процессорного времени потока включается.
|
boolean |
isThreadCpuTimeSupported()
Тесты, если реализация виртуальной машины Java поддерживает измерение процессорного времени для какого-либо потока.
|
void |
resetPeakThreadCount()
Сбрасывает пиковое количество потока к текущему числу живых потоков.
|
void |
setThreadContentionMonitoringEnabled(boolean enable)
Включает или отключает контроль конкуренции потока.
|
void |
setThreadCpuTimeEnabled(boolean enable)
Включает или отключает измерение процессорного времени потока.
|
getObjectName
int getThreadCount()
int getPeakThreadCount()
long getTotalStartedThreadCount()
int getDaemonThreadCount()
long[] getAllThreadIds()
SecurityException
- если менеджер безопасности существует, и вызывающая сторона не сделала, чтобы ManagementPermission ("контролировал").ThreadInfo getThreadInfo(long id)
getThreadInfo(id, 0);
Этот метод возвращает объект ThreadInfo представление информации о потоке для потока указанного ID. Трассировка стека, заблокированные мониторы, и заблокированные синхронизаторы в возвращенном объекте ThreadInfo будут пусты. Если поток данного ID не будет жив или не будет существовать, то этот метод возвратит null. Поток жив, если он был запущен и еще не умер.
Доступ MBeanServer:
Отображенным типом ThreadInfo является CompositeData с атрибутами как определено в ThreadInfo.from
метод.
id
- ID потока потока. Должно быть положительным.ThreadInfo
объект для потока данного ID без трассировки стека, никакого заблокированного монитора и никакой информации синхронизатора; null, если поток данного ID не жив или это не существует.IllegalArgumentException
- если id <= 0.SecurityException
- если менеджер безопасности существует, и вызывающая сторона не сделала, чтобы ManagementPermission ("контролировал").ThreadInfo[] getThreadInfo(long[] ids)
getThreadInfo
(ids, 0);
Этот метод возвращает массив объектов ThreadInfo. Трассировка стека, заблокированные мониторы, и заблокированные синхронизаторы в каждом объекте ThreadInfo будут пусты. Если поток данного ID не будет жив или не будет существовать, то соответствующий элемент в возвращенном массиве будет содержать null. Поток жив, если он был запущен и еще не умер.
Доступ MBeanServer:
Отображенным типом ThreadInfo является CompositeData с атрибутами как определено в ThreadInfo.from
метод.
ids
- массив ID потока.ThreadInfo
объекты, каждый содержащий информацию о потоке, ID которого в своей стихии входного массива ID без трассировки стека, никакого заблокированного монитора и никакой информации синхронизатора.IllegalArgumentException
- если каким-либо элементом во входном массиве ids является <= 0.SecurityException
- если менеджер безопасности существует, и вызывающая сторона не сделала, чтобы ManagementPermission ("контролировал").ThreadInfo getThreadInfo(long id, int maxDepth)
StackTraceElement
быть полученным от трассировки стека. Если maxDepth == Integer.MAX_VALUE, вся трассировка стека потока будет выведена. Если maxDepth == 0, никакая трассировка стека потока не будет выведена. Этот метод не получает заблокированные мониторы и заблокированные синхронизаторы потока. Когда у виртуальной машины Java не будет никакой трассировочной информации стека о потоке или maxDepth == 0, трассировка стека в объекте ThreadInfo будет пустым массивом StackTraceElement.
Если поток данного ID не будет жив или не будет существовать, то этот метод возвратит null. Поток жив, если он был запущен и еще не умер.
Доступ MBeanServer:
Отображенным типом ThreadInfo является CompositeData с атрибутами как определено в ThreadInfo.from
метод.
id
- ID потока потока. Должно быть положительным.maxDepth
- максимальное количество записей в трассировке стека, которая будет выведена. Integer.MAX_VALUE мог использоваться, чтобы запросить весь стек быть выведенным.ThreadInfo
из потока данного ID без заблокированной информации монитора и синхронизатора null, если поток данного ID не жив или это не существует.IllegalArgumentException
- если id <= 0.IllegalArgumentException
- если maxDepth is negative.SecurityException
- если менеджер безопасности существует, и вызывающая сторона не сделала, чтобы ManagementPermission ("контролировал").ThreadInfo[] getThreadInfo(long[] ids, int maxDepth)
StackTraceElement
быть полученным от трассировки стека. Если maxDepth == Integer.MAX_VALUE, вся трассировка стека потока будет выведена. Если maxDepth == 0, никакая трассировка стека потока не будет выведена. Этот метод не получает заблокированные мониторы и заблокированные синхронизаторы потоков. Когда у виртуальной машины Java не будет никакой трассировочной информации стека о потоке или maxDepth == 0, трассировка стека в объекте ThreadInfo будет пустым массивом StackTraceElement.
Этот метод возвращает массив объектов ThreadInfo, каждый - информация о потоке о потоке с тем же самым, индексируют как в массиве ids. Если поток данного ID не будет жив или не будет существовать, то null будет установлен в соответствующем элементе в возвращенном массиве. Поток жив, если он был запущен и еще не умер.
Доступ MBeanServer:
Отображенным типом ThreadInfo является CompositeData с атрибутами как определено в ThreadInfo.from
метод.
ids
- массив ID потокаmaxDepth
- максимальное количество записей в трассировке стека, которая будет выведена. Integer.MAX_VALUE мог использоваться, чтобы запросить весь стек быть выведенным.ThreadInfo
объекты, каждый содержащий информацию о потоке, ID которого в своей стихии входного массива ID без заблокированной информации монитора и синхронизатора.IllegalArgumentException
- если maxDepth is negative.IllegalArgumentException
- если каким-либо элементом во входном массиве ids является <= 0.SecurityException
- если менеджер безопасности существует, и вызывающая сторона не сделала, чтобы ManagementPermission ("контролировал").boolean isThreadContentionMonitoringSupported()
boolean isThreadContentionMonitoringEnabled()
UnsupportedOperationException
- если виртуальная машина Java не поддерживает контроль конкуренции потока.isThreadContentionMonitoringSupported()
void setThreadContentionMonitoringEnabled(boolean enable)
enable
- true, чтобы включить; false, чтобы отключить.UnsupportedOperationException
- если виртуальная машина Java не поддерживает контроль конкуренции потока.SecurityException
- если менеджер безопасности существует, и вызывающая сторона не имеет контроля ManagementPermission.isThreadContentionMonitoringSupported()
long getCurrentThreadCpuTime()
Это - удобный метод для локального использования управления и эквивалентно вызову:
getThreadCpuTime
(Thread.currentThread().getId());
UnsupportedOperationException
- если виртуальная машина Java не поддерживает измерение процессорного времени для текущего потока.getCurrentThreadUserTime()
, isCurrentThreadCpuTimeSupported()
, isThreadCpuTimeEnabled()
, setThreadCpuTimeEnabled(boolean)
long getCurrentThreadUserTime()
Это - удобный метод для локального использования управления и эквивалентно вызову:
getThreadUserTime
(Thread.currentThread().getId());
UnsupportedOperationException
- если виртуальная машина Java не поддерживает измерение процессорного времени для текущего потока.getCurrentThreadCpuTime()
, isCurrentThreadCpuTimeSupported()
, isThreadCpuTimeEnabled()
, setThreadCpuTimeEnabled(boolean)
long getThreadCpuTime(long id)
Если поток указанного ID не жив или не существует, этот метод возвращает -1. Если измерение процессорного времени отключается, этот метод возвращает -1. Поток жив, если он был запущен и еще не умер.
Если измерение процессорного времени включается после того, как поток запустился, реализация виртуальной машины Java может выбрать любое время до и включая время, когда возможность включается как точка, где измерение процессорного времени запускается.
id
- ID потока потокаIllegalArgumentException
- если id <= 0 .UnsupportedOperationException
- если виртуальная машина Java не поддерживает измерение процессорного времени для других потоков.getThreadUserTime(long)
, isThreadCpuTimeSupported()
, isThreadCpuTimeEnabled()
, setThreadCpuTimeEnabled(boolean)
long getThreadUserTime(long id)
Если поток указанного ID не жив или не существует, этот метод возвращает -1. Если измерение процессорного времени отключается, этот метод возвращает -1. Поток жив, если он был запущен и еще не умер.
Если измерение процессорного времени включается после того, как поток запустился, реализация виртуальной машины Java может выбрать любое время до и включая время, когда возможность включается как точка, где измерение процессорного времени запускается.
id
- ID потока потокаIllegalArgumentException
- если id <= 0 .UnsupportedOperationException
- если виртуальная машина Java не поддерживает измерение процессорного времени для других потоков.getThreadCpuTime(long)
, isThreadCpuTimeSupported()
, isThreadCpuTimeEnabled()
, setThreadCpuTimeEnabled(boolean)
boolean isThreadCpuTimeSupported()
boolean isCurrentThreadCpuTimeSupported()
isThreadCpuTimeSupported()
возвраты true.boolean isThreadCpuTimeEnabled()
UnsupportedOperationException
- если виртуальная машина Java не поддерживает измерение процессорного времени для других потоков, ни для текущего потока.isThreadCpuTimeSupported()
, isCurrentThreadCpuTimeSupported()
void setThreadCpuTimeEnabled(boolean enable)
enable
- true, чтобы включить; false, чтобы отключить.UnsupportedOperationException
- если виртуальная машина Java не поддерживает измерение процессорного времени для каких-либо потоков, ни для текущего потока.SecurityException
- если менеджер безопасности существует, и вызывающая сторона не имеет контроля ManagementPermission.isThreadCpuTimeSupported()
, isCurrentThreadCpuTimeSupported()
long[] findMonitorDeadlockedThreads()
Object.wait
вызовите, где каждому потоку принадлежит один монитор, пытаясь получить другой монитор, уже сохраненный другим потоком в цикле. Более формально поток является монитором, заведенным в тупик, если это - часть цикла в отношении, "ожидает объектного монитора, принадлежавшего". В самом простом случае A потока блокируется, ожидая монитора, принадлежавшего потоку B, и поток B блокируется, ожидая монитора, принадлежавшего потоку A.
Этот метод разрабатывается для того, чтобы диагностировать использование, но не для управления синхронизацией. Это могла бы быть дорогая работа.
Этот метод находит, что мертвые блокировки, включающие только, возражают мониторам. Найти мертвые блокировки, включающие и объект, контролирует и ownable синхронизаторы, findDeadlockedThreads
метод должен использоваться.
SecurityException
- если менеджер безопасности существует, и вызывающая сторона не сделала, чтобы ManagementPermission ("контролировал").findDeadlockedThreads()
void resetPeakThreadCount()
SecurityException
- если менеджер безопасности существует, и вызывающая сторона не имеет контроля ManagementPermission.getPeakThreadCount()
, getThreadCount()
long[] findDeadlockedThreads()
Этот метод разрабатывается для того, чтобы диагностировать использование, но не для управления синхронизацией. Это могла бы быть дорогая работа.
SecurityException
- если менеджер безопасности существует, и вызывающая сторона не сделала, чтобы ManagementPermission ("контролировал").UnsupportedOperationException
- если виртуальная машина Java не поддерживает monitoriing ownable использования синхронизатора.isSynchronizerUsageSupported()
, findMonitorDeadlockedThreads()
boolean isObjectMonitorUsageSupported()
dumpAllThreads(boolean, boolean)
boolean isSynchronizerUsageSupported()
dumpAllThreads(boolean, boolean)
ThreadInfo[] getThreadInfo(long[] ids, boolean lockedMonitors, boolean lockedSynchronizers)
Этот метод получает снимок информации о потоке для каждого потока включая:
Этот метод возвращает массив объектов ThreadInfo, каждый - информация о потоке о потоке с тем же самым, индексируют как в массиве ids. Если поток данного ID не будет жив или не будет существовать, то null будет установлен в соответствующем элементе в возвращенном массиве. Поток жив, если он был запущен и еще не умер.
Если поток не заблокирует объектного монитора, или lockedMonitors является false, то у возвращенного объекта ThreadInfo будет пустой массив MonitorInfo. Точно так же, если поток не заблокирует синхронизатора, или lockedSynchronizers является false, то у возвращенного объекта ThreadInfo будет пустой массив LockInfo.
Когда и lockedMonitors и параметрами lockedSynchronizers является false, это эквивалентно вызову:
getThreadInfo(ids, Integer.MAX_VALUE)
Этот метод разрабатывается для того, чтобы диагностировать использование, но не для управления синхронизацией. Это могла бы быть дорогая работа.
Доступ MBeanServer:
Отображенным типом ThreadInfo является CompositeData с атрибутами как определено в ThreadInfo.from
метод.
ids
- массив ID потока.lockedMonitors
- если true, получает все заблокированные мониторы.lockedSynchronizers
- если true, получает, все заблокировали ownable синхронизаторы.ThreadInfo
объекты, каждый содержащий информацию о потоке, ID которого в своей стихии входного массива ID.SecurityException
- если менеджер безопасности существует, и вызывающая сторона не сделала, чтобы ManagementPermission ("контролировал").UnsupportedOperationException
- isObjectMonitorUsageSupported()
, isSynchronizerUsageSupported()
ThreadInfo[] dumpAllThreads(boolean lockedMonitors, boolean lockedSynchronizers)
Этот метод возвращает массив ThreadInfo
объекты как определено в getThreadInfo(long[], boolean, boolean)
метод.
lockedMonitors
- если true, дамп все заблокированные мониторы.lockedSynchronizers
- если true, дамп все заблокировали ownable синхронизаторы.ThreadInfo
для всех живых потоков.SecurityException
- если менеджер безопасности существует, и вызывающая сторона не сделала, чтобы ManagementPermission ("контролировал").UnsupportedOperationException
- isObjectMonitorUsageSupported()
, isSynchronizerUsageSupported()
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92