Как узнать, какой монитор ожидает поток через API? - PullRequest
4 голосов
/ 17 мая 2011

У нас есть тестовый джунит, время ожидания которого, если один тест зависает. Теперь я хочу создать дамп потока через API.

Я знаю, что могу запросить трассировки стека через Thread.getAllStackTraces (). Но дамп потока на консоли содержит много дополнительной информации, например, монитор, которого ожидает поток.

Существует ли API для запроса монитора, на котором ожидает поток?

Ответы [ 2 ]

3 голосов
/ 17 мая 2011

Вы можете использовать JMX для создания дампа потока.

См. Как создать дамп потока через JMX? для примера. Класс ThreadInfo поддерживает получение заблокированных мониторов.

1 голос
/ 17 мая 2011

Документация JDK 6 содержит раздел о программном мониторинге компонентов JVM. Я никогда не использовал их и не смогу предоставить вам пример кода, но он обязательно даст вам старт.

Управление и мониторинг программным способом

API присоединения для подключения к удаленной JVM

Надеюсь, это поможет. Будет очень полезно, если вы сможете поделиться результатами своего исследования.

...