Pessoal, não seria melhor utilizarmos o método .join() na threadRecebeResposta ? Digo isso, pois o último passo da aplicação seria receber uma resposta do servidor ao comando enviado. Condicionando a main thread ao envio do comando "threadEnviaComando.join()", poderemos fechar o socket antes mesmo do servidor devolver uma resposta. É isso mesmo ?
Trecho do código: (aula "Melhorando o cliente")
*// ...
threadRecebeResposta.start();
threadEnviaComando.start();
threadEnviaComando.join();
System.out.println("Fechando o socket do cliente");
socket.close();
Obrigado!