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.
Eu lembro que vi no site da Sun a seguinte recomendação:
class ThreadTeste extends Thread {
Boolean execute = true;
public setExecute(Boolean execute){
this.execute = execute
}
public void run() {
while(execute){
//faz algo
}
}
}
public class Teste {
public static void main(String[] args) {
ThreadTeste t = new Thread();
t.start();
//caso queira interromper
t.setExecute(false);
}
}
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?