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

Java Discussion :

des Thread dans un boucle FOR


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Inscrit en
    Mars 2011
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 99
    Par défaut des Thread dans un boucle FOR
    bonsoir

    j'ai dans la fonction main :


    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
    long t1=System.currentTimeMillis();
    		for(int i=0; i<1000;i++)
    		{
    			i=i+1;
    			TestThread  t= new TestThread(i);
    			t.start();
    			/*
                             if(i==999)
    			{
    			t.join();
    			}
                            */
    		}
     
    		// TODO Auto-generated method stub
    long t2=System.currentTimeMillis()-t1;
     
    System.out.println("temps d'execution T2 thread ===="+t2);

    TestThread avec ce code la

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class TestThread extends Thread {
     
    	int i;
    	public TestThread(int i)
    	{
    		this.i=i;
    	}
    	public void run()
    	{
    		System.out.println("i=="  +i);
    	}
    }



    SVP, J’ai une question comment je peux attendre tous les Thread, créent dans le boucle For, se terminent et puis je passe a l'affichage de temps d'exécution t2

    merci de me répondre

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    44
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2009
    Messages : 44
    Par défaut
    Un exemple de solution (non testé) :

    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
    long t1=System.currentTimeMillis();
    
    		List<TestThread> testThreads = new ArrayList<TestThreads>();
    
    		for(int i=0; i<1000;i++)
    		{
    			i=i+1;
    			TestThread  t= new TestThread(i);
    			testThreads.add(t);
    			t.start();
    			/*
                             if(i==999)
    			{
    			t.join();
    			}
                            */
    		}
    
    		boolean waiting = true;
    		while (waiting) {
    			waiting = false;
    			for (TestThread  t : testThreads) {
    				if (t.isAlive()) {
    					waiting = true;
    				}
    			}
    			Thread.sleep(500);
    		}
     
    		// TODO Auto-generated method stub
    long t2=System.currentTimeMillis()-t1;
     
    System.out.println("temps d'execution T2 thread ===="+t2);

  3. #3
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2008
    Messages
    1 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 190
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    		for(int i=0; i<1000;i++)
    		{
    			i=i+1;
    T'a pas une erreur là? Ton i est déjà incrémenté dans ta boucle for. Ton i=i+1; est donc une erreur.

    Pour attendre la fin de tes Thread il te faut juste faire un join sur chacun d'eux.

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par Huitzilopochtli Voir le message
    Un exemple de solution (non testé) :
    Et mauvais sur le principe. Vous faites une attente active! Utilisez Thread.join() pour attendre la fin d'un thread.

  5. #5
    Membre actif
    Inscrit en
    Mars 2011
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 99
    Par défaut
    merci beuacoup pour tous
    j'ai fais cette solution utiliser un tableau de Thread


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    TestThread[] threads = new TestThread[100];
    		long t1=System.currentTimeMillis();
    		for(int i=0; i<100;i++)
    		{
     
    			threads[i]= new TestThread(i+1);
    			threads[i].start();
     
    		}
    		for(int i=0; i<100;i++)
    		{
    			threads[i].join();
    		}

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

Discussions similaires

  1. Récupération des données dans une boucle for
    Par boubounagh dans le forum Interfaces Graphiques en Java
    Réponses: 22
    Dernier message: 24/10/2011, 16h29
  2. [Débutant] utilisation des Textbox dans une boucle For
    Par zayoub dans le forum VB.NET
    Réponses: 31
    Dernier message: 28/07/2011, 15h55
  3. [PHP 5.3] Tester des conditions dans une boucle for
    Par coulane dans le forum Langage
    Réponses: 4
    Dernier message: 16/06/2010, 11h50
  4. Creer des variables dans un boucle for
    Par zentro dans le forum Général Python
    Réponses: 2
    Dernier message: 06/04/2008, 07h22

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