public void run()
{
//Testa se o interrupt não foi dado
try {
while(!Thread.interrupted()) {
String s = in.readUTF();
jtextField.setText(s);
}
} catch (IOException e) {
//Loga que sua thread foi interrompida devido a exceção
}
}
Agora, é só dar um interrupt() na thread. Outra opção seria fechar o socket, o que causa uma IOException no read.
Agora, no Java, não existe um comando para arbitrariamente matar uma thread. A única forma segura de fazer isso é fazer com que seu código saia do método run() naturalmente.
bruno.leite
Eu lembro que vi no site da Sun a seguinte recomendação:
Porém no caso da leitura do socket ele irá ficar aguardando até o socket receber algo, creio q só parar o while não deve adiantar, se fechar a conexão talvez ele pare… já fez esse teste?
ViniGodoy
Sim mas…
A variável execute tem que ser acessada só em trechos synchronized ou ser declarada como volatile;
É melhor que ela seja um tipo primitivo (boolean) e não um Boolean;
Alterar o estado da variável execute também não vai liberar um socket ou sair de sleep ou wait. Para isso, só interrupt().