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 :Nota : Je précise que lorsque tout ceci tourne, le processus est bloqué sur le code en ligne 27 readerMessage = (String) inputStream.readObject();
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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(); } } }
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.
Partager