Enligt MySQL dokumentation "kill connection thread_id" bör avsluta anslutningen som är associerad med det givna thread_id. Men det ser ut som att det inte händer (i vilket fall kommer Java-tråden att vänta på ett svar för alltid). Kanske kan du verifiera att anslutningen faktiskt är stängd med hjälp av något nätverksverktyg (t.ex. netstat) .
Jag har stött på hängande MySQL-anslutningar tidigare och var tvungen att använda socketTimeout JDBC-anslutningsparameter (men var försiktig:socketTimeout måste vara större än den tid det tar att slutföra den längsta pågående frågan). Du kan också försöka använda QueryTimeout för ett förberett uttalande.