Bonsoir
Je souhaiterais savoir s'il est possible d'accéder à un objet lancer dans un thread.
je m'explique, j'ai une class C_Chat_Emission qui étend la class Thread:
je lance mon thread depuis un autre contrôleur:
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 package CONTROLEUR; import java.io.IOException; import java.io.PrintWriter; import java.util.Scanner; public class C_Chat_Emission extends Thread { private PrintWriter out; private String message = null; private Scanner sc = null; public C_Chat_Emission(PrintWriter out) {this.out = out;} public void run() { sc = new Scanner(System.in); while(true) { System.out.println("Votre message :"); this.message = this.sc.nextLine(); this.sendMessage(this.message); //this.out.println(this.message); //this.out.flush(); } } /** * Envoie un message au serveur * @param String message */ public void sendMessage(String message) { this.out.println(message); this.out.flush(); } }
Je souhaiterais une fois lancé pouvoir agir sur mon objet, par exemple utiliser la méthode
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
41
42
43
44
45
46
47
48
49
50 package CONTROLEUR; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; public class C_Chat extends Thread { private Socket socket; private PrintWriter out = null; private BufferedReader in = null; private Thread threadEmission, threadReception; private Boolean active = true; public C_Chat(Socket s) {this.socket = s;} public void run() { try { this.out = new PrintWriter(this.socket.getOutputStream()); this.in = new BufferedReader(new InputStreamReader(this.socket.getInputStream())); this.threadEmission = new Thread(new C_Chat_Emission(this.out)); this.threadEmission.start(); this.threadReception = new Thread(new C_Chat_Reception(this.in)); this.threadReception.start(); while(this.active) { if(!this.threadReception.isAlive()) { System.out.println("interruption du thread: "+this.threadEmission.getName()); this.threadEmission.interrupt(); System.out.println("fermeture de la socket: "+this.socket.toString()); this.socket.close(); this.active = false; } } System.out.println("interruption du thread: "+this.getName()); this.interrupt(); } catch (IOException e) {System.err.println("Le serveur distant s'est déconnecté !");} } }mais je ne vois pas comment faire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part public void sendMessage(String message)
J'ai testé :
mais comme je m'y attendais ça ne fonctionne pas. Je ne trouve rien de précis sur ce sujet sur le net...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 this.threadEmission.sendMessage("test");
Si quelqu'un a une piste une idée ...
Partager