Как измерить задержку, которая появляется, когда потоки ожидают соединения с БД?

Скажем, у меня есть Java-приложение с 10 нитями deamon.

Скажем, у меня есть пул соединений (например, c3p0) с максимум 3 соединениями.

Каждый из потоков работает с базой данных. Это может произойти (конечно, это действительно происходит), когда один поток ожидает соединения в состоянии BLOCKED.

И мне нужно измерить общую задержку потока, когда каждый из них находится в состоянии BLOCKED в ожидании соединения.

Каков наилучший способ сделать это?

1 ответ

Расширьте Thread своей собственной реализацией и переопределите метод "notify", чтобы он сохранял "system.currentTimeMilis" в некотором кеше - вы можете вызвать метод с аргументом miliseconds, чтобы позаботиться о notifyTimes для каждого потока. Затем в расширенном потоке переопределите метод run/start и снова получите currentTimeMilis. Получите currentTime метода wait (снова переопределите и не забудьте вызвать супер метод в переопределениях). Поиграйте с этими 3 типами времени ваших тем, и вы должны быть в состоянии сделать свои тесты.

Другие вопросы по тегам