bonjour
Petite question : j'ai une classe A qui a un moment créée une thread, cette thread fonctionne bien. A un instant x plus tard, cette thread a besoin d'envoyer une valeur a la classe mère A comment faire ?
merci
bonjour
Petite question : j'ai une classe A qui a un moment créée une thread, cette thread fonctionne bien. A un instant x plus tard, cette thread a besoin d'envoyer une valeur a la classe mère A comment faire ?
merci
Bonjour,
Tu peux ajouter un attribut de ta classe A dans la classe de ton Thread.
non ???
SAlut, tu pourrais être un peu plus explicite?
A vue de nez, si tu connais le délai entre chaque envoi, tu fais un sleep dans ton thread et tu l'envoie à ce moment là, soit il d'agit de deux thread en parallèle auquel cas utilise un pipe/socket entre les deux (je me rappelle plus lequel..)
je ne connais pas les temps, c'est asynchrone
Je pensais passer la référence de la classe A au thread lors de sa création mais la ... avez-vous un exemple svp.
La classe qui herite de runnable peux etre instanciée pas une autre classe que A.
Voilà un exemple tout con.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 public class Affichage { public void recevoir(int i) { System.out.println(i); } public static void main(String[] args) { Affichage affichage = new Affichage(); new Thread(new MonThread(affichage)).start(); } }Le thread envoie une valeur à ta classe. J'espère que ca pourra t'aider.
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 public class MonThread implements Runnable { private Affichage affichage; public MonThread(Affichage affichage) { super(); this.affichage = affichage; } public void run() { for (int i = 0 ; i < 10 ; i++) { affichage.recevoir(i); } } }
ok merci de vos réponse
mais une autre question me vient en tete...
dans la classe MonThread vous avez déclarez une référence par
doc cela fonctionne bien si c'est la classe Affichage qui a généré l'instanciation du thread et qui doit recevoir les informations.
Code : Sélectionner tout - Visualiser dans une fenêtre à part private Affichage affichage;
Mais comment faire pour que la classe Monthread soit générique cad que la référence affichage change pour pouvoir etre appliquer à une autre classe
je sais pas si je suis tres clair !
La création et le démarrage du Thread peut très bien être fait dans une autre classe. (Tu peux déplacer le code de la méthode main dans une autre classe si tu veux)
Sinon après par exemple tu peux mettre ton attribut de ton thread dans un type et passé en paramètre lors de création un type qui dérive du type de l'attribut.
Tu comprend ce que je veux dire ???
eu....
avez-vous un exemple (si cela ne prend pas trop de temps) car la j'avoue que je ne suis pas certain de bien tout saisir. En fait on passer la reférence au thread ? Mais comment faire
J'espère que ca repond a tes questions ?
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 public interface Affichage { public void recevoir(int i); } public class AffichageSimple implements Affichage { public void recevoir(int i) { System.out.println(i); } } public class AffichageDouble implements Affichage { public void recevoir(int i) { System.out.println(i*2); } } public class MonThread implements Runnable { private Affichage affichage; public MonThread(Affichage affichage) { super(); this.affichage = affichage; } public void run() { for (int i = 0 ; i < 10 ; i++) { affichage.recevoir(i); } } } public class Test { public static void main(String[] args) { new Thread(new MonThread(new AffichageSimple())).start(); // ou new Thread(new MonThread(new AffichageDouble())).start(); } }
MERCI c'est exactement ce que je souhaite faire
OK
Bah ca depend de ce que tu veux, si par exemple tu change la classe AffichageDouble pour qu'elle implémente une autre interface : tu ne poura plus la passer en paramètre lors de la création de ton Thread.
en fait j'avais pas vu ton commentaire
Merci de ton aide
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager