Как измерить задержку, которая появляется, когда потоки ожидают соединения с БД?
Скажем, у меня есть Java-приложение с 10 нитями deamon.
Скажем, у меня есть пул соединений (например, c3p0) с максимум 3 соединениями.
Каждый из потоков работает с базой данных. Это может произойти (конечно, это действительно происходит), когда один поток ожидает соединения в состоянии BLOCKED.
И мне нужно измерить общую задержку потока, когда каждый из них находится в состоянии BLOCKED в ожидании соединения.
Каков наилучший способ сделать это?
1 ответ
Расширьте Thread своей собственной реализацией и переопределите метод "notify", чтобы он сохранял "system.currentTimeMilis" в некотором кеше - вы можете вызвать метод с аргументом miliseconds, чтобы позаботиться о notifyTimes для каждого потока. Затем в расширенном потоке переопределите метод run/start и снова получите currentTimeMilis. Получите currentTime метода wait (снова переопределите и не забудьте вызвать супер метод в переопределениях). Поиграйте с этими 3 типами времени ваших тем, и вы должны быть в состоянии сделать свои тесты.