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

Langage Java Discussion :

une méthode qui fait deux traitement en parallèle


Sujet :

Langage Java

  1. #1
    Membre du Club
    Inscrit en
    Août 2008
    Messages
    184
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 184
    Points : 49
    Points
    49
    Par défaut une méthode qui fait deux traitement en parallèle
    Bonjour à Tous,

    Voila mon souci :

    Je dois faire une méthode qui fait deux traitement en parallèle , si le premier est terminer elle retourne une valeur mais sans sortir car elle doit finir le 2ème traitement.

    Je sais pas si je suis très claire .

    Merci de m'aider sur ce point.

  2. #2
    Membre expérimenté Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Points : 1 540
    Points
    1 540
    Par défaut
    Je dois faire une méthode qui fait deux traitement en parallèle
    A 95%, je dirais qu'il faut utiliser des Threads ( 2 plus exactement)
    Tu les codes et tu les lance en même temps :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    thread1.start();
    thread2.start();
    Renseigne toi sur la faq
    Il était une fois [...] Et ils vécurent heureux et eurent beaucoup d'enfants!

  3. #3
    Membre du Club
    Inscrit en
    Août 2008
    Messages
    184
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 184
    Points : 49
    Points
    49
    Par défaut
    J'ai réfléchi à cette méthode, mais le problème c'est que si le thread 1 est fini il doit faire un retour => alors je sort de la fonction et c'est ce que je veux pas , je veux que la fonction continue à exécuter le 2eme thread

  4. #4
    Membre expérimenté Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Points : 1 540
    Points
    1 540
    Par défaut
    Il te suffit d'utiliser un boolean témoin.
    Et quand le second traitement est fini tu le mets à true.

    Ou alors empêche le premier traitement de faire un retour. Et c'est le deuxième qui s'en chargera.

    Difficile dans dire plus sans plus de détail sur les traitements à faire

    Edit : on alors je n'ai pas tous compris et l'utilisation des thread n'est pas forcement nécessaire
    Il était une fois [...] Et ils vécurent heureux et eurent beaucoup d'enfants!

  5. #5
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Les threads continuent à s'exécuter même si tu sors de la fenêtre. Le problème c'est qu'après il faudra gérer le passage des informations.

    Pourquoi as-tu besoin de faire ceci ? Essayes de nous expliquer ton besoin exact (et non pas comment tu veux résoudre cela) ?


    a++

  6. #6
    Membre du Club
    Inscrit en
    Août 2008
    Messages
    184
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 184
    Points : 49
    Points
    49
    Par défaut
    Voila mon problème en détail :
    Une méthode qui a comme paramètres des argument arg1,arg2,arg3
    en premier temps je dois vérifier la validité de ces données et retourner un accusé de réception comme quoi c'est OK , la fonction continue le deuxième traitement s'il fini un retour comme quoi l'opération est effectue.

  7. #7
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Et qui ou quoi appelle cette méthode ?
    Ne devrais-tu pas revoir ton algo ?
    Un exemple (d'après ce que j'ai pu comprendre du problème...) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Traitement t = new Traitement();
    if( t.setArgument( arg1, arg2, arg3 ) == true )
    {
      Resultat r = t.compute();
    }
    else
    {
      System.out.println( "erreur sur les argument" );
    }
    L'objet Traitement connait le moyen de vérifier les argument, et sait les traiter.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  8. #8
    En attente de confirmation mail
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Octobre 2010
    Messages
    501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2010
    Messages : 501
    Points : 1 060
    Points
    1 060
    Par défaut
    Bonjour,

    Les explications ne sont pas toutes très claires, mais peut-être que cette réponse peut aider:

    Dans la classe Thread, il y a une méthode isAlive() pour savoir si le thread tourne toujours.

    Donc en gros ça peut donner ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    thread1.start();
    thread2.start();
     
    while( thread1.isAlive() ) {
      Thread.currentThread().sleep(100);
    }
     
    while( thread2.isAlive() ) {
      Thread.currentThread().sleep(100);
    }
     
    // Ici les deux threads sont terminés

  9. #9
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    @Nudger : il y a join() tout simplement...



    @cyclopsnet
    : mais encore : pourquoi as-tu besoin de renvoyer deux résultats ?
    Pourquoi ne pas se contenter de retourner le résultat final ?


    a++

  10. #10
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Citation Envoyé par Nudger Voir le message
    Dans la classe Thread, il y a une méthode isAlive() pour savoir si le thread tourne toujours.
    Compliqué comme technique. Il y a une méthode faite pour ça : join.

    EDIT : trop lent
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  11. #11
    Membre du Club
    Inscrit en
    Août 2008
    Messages
    184
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 184
    Points : 49
    Points
    49
    Par défaut
    voila un algo :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function(arg1,arg2,arg3)
    {
          if(verification)
             {
               return "OK1";
               if(traitement)
                 {
                     return "OK2";
                 }else{return "NOK2"}
             }else{return "NOK1"}
    }
    verification et traitement sont des fonction qui font le baulot et qui retournent un booléen

    C'est les spécifications qui disent que la méthode vérifie en premier temps la validité des données si ok on retourne un OK et on continue le traitement principale

  12. #12
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Les spécifications ne sont pas corrects : le return arrête la méthode. Tu dois trouver un autre moyen de transmettre le "OK" à celui qui l'attend.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  13. #13
    Membre du Club
    Inscrit en
    Août 2008
    Messages
    184
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 184
    Points : 49
    Points
    49
    Par défaut
    Avez-vous une alternative ??

  14. #14
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Citation Envoyé par cyclopsnet Voir le message
    Avez-vous une alternative ??
    Non car comme déjà dit, tu ne nous donnes aucune information.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  15. #15
    Membre du Club
    Inscrit en
    Août 2008
    Messages
    184
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 184
    Points : 49
    Points
    49
    Par défaut
    Des informations comme quoi ?
    Je vous ai montré l'algo que je dois faire une méthode qui fait un retour et continue son traitement.

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 342
    Points : 419
    Points
    419
    Par défaut
    la question c'est vus ton problème tu est sur du traitement en parallèle ?

    un thread qui vérifie si les paramètre sont OK alors que l'autre calcule déjà dessus ... je pense qu'il y a un problème

    c'est un problème de fonction ton truc non ?

    ps: c'est ce que j'ai compris de l'algo

  17. #17
    Membre du Club
    Inscrit en
    Août 2008
    Messages
    184
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 184
    Points : 49
    Points
    49
    Par défaut
    On élimine le point du traitement en parallèle .
    le problème est comment faire pour que même si la fonction fait un retourn continue continue a exécuté un code.

  18. #18
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Citation Envoyé par cyclopsnet Voir le message
    Je vous ai montré l'algo que je dois faire une méthode qui fait un retour et continue son traitement.
    C'est impossible.
    (C'est moi ou la discussion tourne en rond ? )
    Relis le dernier post d'Adiguba : ta solution technique n'est pas bonne. Tu dois donc nous expliquer qui demande quoi, dans quel but, le protocole utilisé entre les différentes entités du projet
    Cesse de te focaliser sur ta mauvaise solution et explique nous les hypothèses de départ qui t'ont amenées à la mauvaise conclusion
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  19. #19
    Membre du Club
    Inscrit en
    Août 2008
    Messages
    184
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 184
    Points : 49
    Points
    49
    Par défaut
    Oki,
    On a un IHM où on saisie un num de telephone et le message a envoyé.

    Une méthode récupere ces données vérifie si le num entré est valide si oui retourne un String comme quoi sa demande est en cours de traitement et continue le traitement de l'envoie du message.

  20. #20
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Pourquoi ne pas utiliser deux méthodes ? Une pour vérifier le numéro, l'autre pour envoyer le message ?

    Ou alors si la problématique consiste uniquement à mettre à jour l'UI, pourquoi ne pas utiliser un listener ?

    a++

    [edit] C'est du Swing ? si oui un SwingWorker ferait parfaitement l'affaire...

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 13
    Dernier message: 30/10/2014, 17h37
  2. Supprimer une crontab qui fait planter le server
    Par osmoze dans le forum Administration système
    Réponses: 5
    Dernier message: 31/03/2006, 15h42
  3. Réponses: 12
    Dernier message: 23/03/2006, 14h13
  4. [SQL] une requete qui fait mal a la tete
    Par MailOut dans le forum Langage SQL
    Réponses: 7
    Dernier message: 07/02/2005, 16h22
  5. une méthode qui écrit dans la sortie html ?
    Par iubito dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 03/12/2003, 15h34

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