Com base na pergunta e nos comentários, você pode procurar a pilha de chamadas em execução do java por meio do comando jstack
:
jstack processid
Se houver alguns segmentos esperando por um longo tempo em alguma condição, é mais provável que seja um impasse. Um impasse pode ser raro no código de nível de produção, mas comum no código multithread experimental. No primeiro caso, uma nova execução pode corrigir o problema, mas, no caso posterior, uma depuração detalhada pode ser necessária.
Espero que isso ajude.