De acordo com a documentação do MySQL "kill connection thread_id" deve encerrar a conexão associada ao thread_id fornecido. Mas parece que isso não está acontecendo (nesse caso, o thread Java aguardará uma resposta para sempre). Talvez você possa verificar se a conexão está realmente fechada usando alguma ferramenta de rede (por exemplo, netstat) .
Eu encontrei conexões MySQL suspensas antes e tive que recorrer ao uso do socketTimeout Parâmetro de conexão JDBC (mas tenha cuidado:o socketTimeout precisa ser maior que o tempo necessário para concluir a consulta de execução mais longa). Você também pode tentar usar o Tempo limite da consulta para uma declaração preparada.