IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Concurrence et multi-thread Java Discussion :

[thread] communication entre threads


Sujet :

Concurrence et multi-thread Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 107
    Points : 82
    Points
    82
    Par défaut [thread] communication entre threads
    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

  2. #2
    Membre actif

    Étudiant
    Inscrit en
    Mai 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 200
    Points : 276
    Points
    276
    Par défaut
    Bonjour,

    Tu peux ajouter un attribut de ta classe A dans la classe de ton Thread.

    non ???

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    252
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 252
    Points : 64
    Points
    64
    Par défaut
    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..)

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 107
    Points : 82
    Points
    82
    Par défaut
    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.

  5. #5
    Membre actif

    Étudiant
    Inscrit en
    Mai 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 200
    Points : 276
    Points
    276
    Par défaut
    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();
    	}
     
    }
    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);
    		}
    	}
     
    }
    Le thread envoie une valeur à ta classe. J'espère que ca pourra t'aider.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 107
    Points : 82
    Points
    82
    Par défaut
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private Affichage affichage;
    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.

    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 !

  7. #7
    Membre actif

    Étudiant
    Inscrit en
    Mai 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 200
    Points : 276
    Points
    276
    Par défaut
    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 ???

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 107
    Points : 82
    Points
    82
    Par défaut
    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

  9. #9
    Membre actif

    Étudiant
    Inscrit en
    Mai 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 200
    Points : 276
    Points
    276
    Par défaut
    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();
    	}
    }
    J'espère que ca repond a tes questions ?

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 107
    Points : 82
    Points
    82
    Par défaut
    MERCI c'est exactement ce que je souhaite faire

    OK

  11. #11
    Membre actif

    Étudiant
    Inscrit en
    Mai 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 200
    Points : 276
    Points
    276
    Par défaut
    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.

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 107
    Points : 82
    Points
    82
    Par défaut
    en fait j'avais pas vu ton commentaire
    Merci de ton aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [C#] Communication entre thread
    Par kekesilo dans le forum Windows Forms
    Réponses: 11
    Dernier message: 17/09/2007, 20h48
  2. Problème de communications entre threads
    Par maya09 dans le forum Windows
    Réponses: 1
    Dernier message: 22/02/2006, 23h18
  3. [VB.Net][Threading] Communication entre processus
    Par DonF dans le forum Windows Forms
    Réponses: 2
    Dernier message: 21/02/2006, 16h15
  4. Communication entre thread
    Par JFPS Soft dans le forum Concurrence et multi-thread
    Réponses: 2
    Dernier message: 03/02/2006, 18h38
  5. [c#][threading] communication entre threads
    Par orelero dans le forum C#
    Réponses: 6
    Dernier message: 02/01/2006, 01h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo