С Tomcat 7 вы можете добавить StuckThreadDetectionValve , который позволит вам идентифицировать "застрявшие" потоки. Вы можете настроить клапан в элементе контекста тех приложений, для которых вы хотите определить:
<Context ...>
...
<Valve
className="org.apache.catalina.valves.StuckThreadDetectionValve"
threshold="60" />
...
</Context>
Это будет записывать запись WARN в журнал tomcat для любого потока, который занимает более 60 секунд, что позволит вам идентифицировать приложения и запретить их, потому что они неисправны.
Исходя из исходного кода , вы можете написать свой собственный клапан, который пытается остановить поток, однако это может повлиять на пул потоков, и надежного способа не существует остановки потока в Java без сотрудничества с этим потоком ...