Средство jvisualvm, входящее в комплект JDK, может вам немного помочь, хотя информация о профилировании его процессора довольно ограничена (скорее визуализатор для данных Xprof). Я обычно нахожу это более полезным для профилирования памяти.
JProfiler имеет довольно хороший профилировщик процессора с некоторыми действительно интересными функциями, которые могут вам помочь, но он коммерческий.
Или, вы можете добавить сбор статистики в ваш код (например, измерить, сколько времени требуется для выполнения каждого синхронизированного метода, который вы подозреваете, разбив его на время ожидания синхронизации / времени выполнения метода), хотя это намного больше работы .