Je n'arrive pas à tuer le Thread
Bonjour,
Malgré les innombrables tutoriels (dont cet excellent ici) lus sur le sujet épineux du cycle de vie des Thread, je n'arrive toujours pas à tuer le mien.
D'une autre classe, j'invoque sa méthode doStop() et je teste l'état du Thread avec isThreadAlive() qui me retourne toujours RUNNABLE au lieu de TERMINATED :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| public class ControlReader implements Runnable{
ObjectInputStream inputStream;
private String readerMessage;
private volatile Thread currentThread = null;
public ControlReader(ObjectInputStream in){
this.inputStream = in;
}
public String getMessage(){
return readerMessage;
}
public String isThreadAlive(){
return currentThread.getState().toString();
}
public void doStop(){
currentThread.interrupt();
}
public void run() {
currentThread = Thread.currentThread();
while(!currentThread.isInterrupted()){
try {
readerMessage = (String)inputStream.readObject();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} |
Nota : Je précise que lorsque tout ceci tourne, le processus est bloqué sur le code en ligne 27 readerMessage = (String) inputStream.readObject();
Normal, car ma classe Runnable attend un message du l'application Client.
Quelqu'un saurait-il m'expliquer ce qui ne va pas ?
Merci d'avance pour votre aide.