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

avec Java Discussion :

Bloquer le renvoie du resultat d'une m�thode jusqu'� exc�cution de tous les thread


Sujet :

avec Java

  1. #1
    Membre �clair� Avatar de zemzoum89
    Profil pro
    �tudiant
    Inscrit en
    Janvier 2010
    Messages
    373
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Janvier 2010
    Messages : 373
    Par d�faut Bloquer le renvoie du resultat d'une m�thode jusqu'� exc�cution de tous les thread
    Bonjour,

    voil� j'ai une m�thode qui renvoie un resultat et � l'int�rieur je cr�e � chaque tour de boucle tant que mon tableau (tableau qui contient des objets) n'est pas vide (a chaque fois j'enl�ve l'�l�ment qui a �t� trait�) un thread qui s'occupe d'appeler une m�thode de l'objet concern� et ajoute le r�sultat � une liste et � la fin je renvoie cette liste de r�sultat mais le probl�me c'est que je recois le r�sultat avant que les thread ne termine ce qu'ils font...

    Merci beaucoup pour votre aide...

  2. #2
    Membre confirm�
    Homme Profil pro
    Chef de projet, d�veloppeur .net
    Inscrit en
    Juin 2010
    Messages
    76
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 39
    Localisation : France, Finist�re (Bretagne)

    Informations professionnelles :
    Activit� : Chef de projet, d�veloppeur .net
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2010
    Messages : 76
    Par d�faut
    Bonjour,

    d'apr�s mes quelques souvenirs de TP java sur les threads, pour r�gler ce genre de probl�me, on peut utiliser des syst�me de jetons.

    Quelque chose comme un compteur de jetons dans ton threads principal
    tu ajoute un jeton � chaque thread cr��, tu lance tes threads et quand ils se finissent, tu leur fait appeler une m�thode Lib�rerJeton() qui d�cr�mente ton compteur et teste si le compteur est � 0, si oui tu renvois le r�sultat, sinon tu attends encore.

    J'esp�re que c'est clair et que je ne raconte pas de b�tise

  3. #3
    Membre Expert Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Par d�faut
    Sinon, tu gardes les r�f�rences des threads cr��s � l'int�rieur de la boucle et, en sortie de boucle, tu fais :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    for (Thread thread : listeThreads) {
       thread.join();
    }

  4. #4
    Membre �clair� Avatar de zemzoum89
    Profil pro
    �tudiant
    Inscrit en
    Janvier 2010
    Messages
    373
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Janvier 2010
    Messages : 373
    Par d�faut
    et que fait cette thread.join()?? merci beaucoup

  5. #5
    Membre confirm�
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    35
    D�tails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations forums :
    Inscription : Mars 2007
    Messages : 35
    Par d�faut
    La m�thode join() permet au Thread courant d'attendre la fin de l'ex�cution du thread sur lequel la m�thode est appel�e donc boucler sur chacun des thread de cette mani�re te permettra d'�tre s�r que tous les threads sont bien termin�s.

  6. #6
    Membre �clair� Avatar de zemzoum89
    Profil pro
    �tudiant
    Inscrit en
    Janvier 2010
    Messages
    373
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Janvier 2010
    Messages : 373
    Par d�faut
    Franchement je n'ai pas compris votre solution, vous pouvez me l'illustrer avec un exemple svp? Merci d'avance...

  7. #7
    Membre confirm�
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    35
    D�tails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations forums :
    Inscription : Mars 2007
    Messages : 35
    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
    public class Example {
        public static void main(String[] args) {
            //Création des threads
            Thread[] threads = new Thread[2];
            threads[0]=new Thread();
            threads[1]=new Thread();
            //lancement des threads
            for (Thread thread : threads) {
                thread.start();
            }
            //attente de la fin de tous les threads
            for (Thread thread : threads) {
                try {
                    thread.join();
                } catch (InterruptedException e) {
                    //TODO manage me
                    e.printStackTrace();
                }
            }
            //ici tout les threads sont terminés 
        }
    }

  8. #8
    Membre �clair� Avatar de zemzoum89
    Profil pro
    �tudiant
    Inscrit en
    Janvier 2010
    Messages
    373
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Janvier 2010
    Messages : 373
    Par d�faut
    Mais moi ma m�thode run ne fini jamais car je programme une sorte de serveur donc le thread il tourne toujours est ce que tread.join() marche dans ce cas la ?, je ne crois pas que c'est le cas... Merci pour votre aide...

  9. #9
    Membre confirm�
    Homme Profil pro
    Chef de projet, d�veloppeur .net
    Inscrit en
    Juin 2010
    Messages
    76
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 39
    Localisation : France, Finist�re (Bretagne)

    Informations professionnelles :
    Activit� : Chef de projet, d�veloppeur .net
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2010
    Messages : 76
    Par d�faut
    Donc il te reste encore la solution d'utiliser des jetons comme je le disais plus haut

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Une m�thode toString qui appelle tous les objets
    Par Invit� dans le forum D�buter avec Java
    R�ponses: 6
    Dernier message: 28/05/2013, 18h09
  2. mettre en cache le resultat d'une m�thode
    Par austin P. dans le forum Spring
    R�ponses: 3
    Dernier message: 03/03/2008, 17h06
  3. R�ponses: 10
    Dernier message: 10/12/2006, 16h26
  4. R�ponses: 3
    Dernier message: 22/05/2006, 10h21

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