Заблокированные потоки не обязательно являются проблемой, в java при обработке одновременных запросов и использовании одноэлементных классов или хэш-карт и т. Д. Естественно иметь некоторую блокировку в качестве средства для достижения разумности в данных ...
Когда брать дампы ниток -
Когда сервер weblogic сообщает о зависших потоках, или вы получаете общую медлительность в ответе (хотя этому способствуют многие другие факторы)
Как взять дампы потока -
Всегда берите 3-4 дампов с интервалом в 1-2 секунды. Просмотр 1 мгновенного дампа потока обычно не дает полной картины. Если вы замечаете, что одни и те же потоки находятся в заблокированном состоянии почти во всех 3-4 дампах, проверьте, какой поток удерживает блокировку и что он делает, удерживает ли поток блокировка выполняет одну и ту же задачу во всех 4 дампах, если да, то вы получили представление о том, что нужно устранить.
В дампе темы, который вы дали ..
ExecuteThread: «387» ожидает
ожидает блокировки <0x000000051ea30728>
и ExecuteThread: «159» удерживает заблокированным <0x000000051ea30728>, но 159 находится в состоянии Runnable, что означает, что он не застрял и выполняет свои обычные операции.
если бы вы взяли несколько дампов потоков и увидели, что 159 слишком долго удерживает блокировку, вам нужно подумать о настройке приложения и подумать об обходном пути, если это возможно, вокруг этой блокировки.