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 :

Méthode et thread


Sujet :

Concurrence et multi-thread Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 8
    Par défaut Méthode et thread
    Bonjour,
    J'ai plusieurs méthodes que je dois appeler les unes à la suite des autres. J'ai utilisé la méthode "Thread.join()" de chacun de mes traitements mais je ne sais pas si c'est la bonne façon de faire.

    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
     
    JDialog d = new JDialog(); //qui contient une progress bar
    final SwingWorker<Void, Void> s = new SwingWorker<Void, Void>(){
               protected Void doInBackground() throws Exception {
    	          Thread t1 = new Thread(new Runnable() {
    		      public void run() {
                                 LANCEMENT D'UN MOTEUR DE CALCUL //qui génére un fichier
    	              }
                      });
    		   Thread t2 = new Thread(new Runnable() {
    		        public void run() {
    			        boolean fileFound = false;
    				 while(!fileFound) {
    				         try {
    					      fileFound = isFileResultatExist();
    					      Thread.sleep(4000);
    					  } catch (Exception ex) { }
    				}
    			}
    		     });
    		     Thread t3 = new Thread(new Runnable() {
    		          public void run() {
    			       CHARGEMENT DES RESULTATS
    		          }
    		     });
     
                         t1.start();
    		     t1.join();
    	             t2.start();
    		     t2.join();
    		     t3.start();
    		     t3.join();
    		     return null;
    	     }
    	      protected void done() {
    		      d.dispose(); //JDialog avec une progress bar
                  }
        };
      s.execute();
      d.setVisible(true);
    Si quelqu'un pouvait me dire ce qu'il en pense ; ou si la façon de faire est bonne ou pas.
    Merci

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    J'ai du mal à voir l'utilité de 3 threads dans la mesure où tu veux qu'ils s'exécutent l'un derrière l'autre , un seul aurait suffit...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 8
    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
     
    JDialog d = new JDialog(); //qui contient une progress bar
    final SwingWorker<Void, Void> s = new SwingWorker<Void, Void>(){
               protected Void doInBackground() throws Exception {
                         LANCEMENT D'UN MOTEUR DE CALCUL //qui génére un fichier
    	             boolean fileFound = false;
    				 while(!fileFound) {
    				         try {
    					      fileFound = isFileResultatExist();
    					      Thread.sleep(4000);
    					  } catch (Exception ex) { }
    				}
    		     CHARGEMENT DES RESULTATS
    		     return null;
    	     }
    	      protected void done() {
    		      d.dispose(); //JDialog avec une progress bar
                  }
        };
      s.execute();
      d.setVisible(true);
    Effectivement, les thread sont totalement inutiles... Parce qu'avant, j'avais testé alors que la boucle "while" était dans une méthode à part.
    Post totalement inutile....
    Merci de ta réponse

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Attention, tu fais exécuter ton code par le même thread que celui qui s'occupe de l'affichage !

    Si le code à exécuter est long, il est vivement conseillé de le faire faire par un thread séparé.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    Attention, tu fais exécuter ton code par le même thread que celui qui s'occupe de l'affichage !
    Non puisqu'il utilise un SwingWorker

    a++

  6. #6
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Non puisqu'il utilise un SwingWorker

    a++
    Oups, j'avais pas fait gaffe... merci
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 20/05/2014, 12h21
  2. Appel de méthode de thread
    Par ghostbrain dans le forum Débuter avec Java
    Réponses: 6
    Dernier message: 10/02/2012, 19h24
  3. [Thread]Faut-il boucler la méthode run ?
    Par Pill_S dans le forum Concurrence et multi-thread
    Réponses: 6
    Dernier message: 17/06/2004, 22h53
  4. thread et méthodes static
    Par sylpichard dans le forum MFC
    Réponses: 3
    Dernier message: 02/06/2004, 17h12
  5. [SWING][THREAD]Méthodes pour afficher une Frame
    Par pompidouwa dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 05/05/2004, 10h35

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