Pull to refresh

Comments 10

UFO just landed and posted this here
Метод findDeadlockedThreads появился в java 1.6, так что лучше или использовать findMonitorDeadlockedThreads, или предварительно определить наличие нужного метода с помощью reflection, и делать вызов через Method.invoke(). Благо, возвращают оба этих метода long[].

Кстати, старая статья на ту же тему: Automatically Detecting Thread Deadlocks
А ещё можно без всяких выкрутасов нажать в консоли Ctrl+Break.
или использовать утилиту jstack
Правильно ли я понял что дедлок показывает только когда он реально случился? Что в этом может быть такого интересного? Применение видится только что на систему автоматических тестов навесить проверку чтобы работа службы прерывался раньше таймаута, если дедлок обнаружен.
такая система может пригодиться к примеру в пулов коннекций, потоков и т.д. к примеру существует такой пул потоков к базе данных под названием c3p0. К примеру есть конечное число коннекций к базе данных, и какая-нибудь коннекция подвисла или jdbc не отдает ресурс, в c3p0 есть поток, который мониторит dead lock's и в случае возникновения, прибивает потоки.
И посылает разгневанное письмо разработчикам :) Вообще забавный подход к разработке получается, пиши дедлочный код, прибивай потоки. Только я не понял почему на стороне базы данных c3p0 предлагается мониторить дедлогки, это же надо делать на стороне приложения, не?
c3p0 — не база, а библиотека пула соединений. Как apache commons dbcp. И работает она, соответственно, на стороне приложения.
Кстати, и notify() в данном коде совсем без надобности.
Sign up to leave a comment.

Articles