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 :

Lancer plusieurs fois la meme thread


Sujet :

Concurrence et multi-thread Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 360
    Par défaut Lancer plusieurs fois la meme thread
    Bonjour,

    Je souhaite lancer par exemple 5 thread de suite, comment faire?

    J'ai cree ma classe qui derive de thread et la methode run mais lorsque je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for (int i = 0; i < 5; i++) {      			
          			new Clients().start();   
          			Thread.sleep(30);
     
          		}
    au lieu de me le lancer 5 fois , il me le lance des fois 7 fois , des fois 9 fois , c'est aleatoire.

    Merci de votre aide.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 360
    Par défaut
    J'ai tenté ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    for (int i = 0; i < 10; i++) {
          			Clients client = new Clients();
          			Thread t = new Thread(client);
          			t.start();
     
          		  try {
          		      t.join();
          		    } catch (InterruptedException e) {
          		      e.printStackTrace();
          		    }
          		}
    C'est un peu mieux, parfois il m'en fait 11 et parfois 10

    quelqu'un a une idee pour avoir exactement le nombre de thread que je veux ?

    Merci de votre aide.

  3. #3
    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
    Salut,

    Citation Envoyé par andromeda Voir le message
    au lieu de me le lancer 5 fois , il me le lance des fois 7 fois , des fois 9 fois , c'est aleatoire.
    On pourrait voir le code de ta classe Clients ?

    a++

    PS : dans le deuxième code, à quoi ca sert de lancer un thread si c'est pour faire un join() derrière ???

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 360
    Par défaut
    le code n'a rien a voir avec ca je pense, c'est au niveau du thread.
    meme si le thread a un code minimum, pour afficher toto ca fait la meme chose.

    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
     
    import java.io.IOException;
    import java.net.Socket;
    import java.util.Date;
     
    import kConst.Constantes;
     
    public class Clients extends Thread {
    	private Socket client;  	
     
    	public Clients(){
            try{                    
    	       	System.out.println(new Date()+ "==> Tentative de connexion au serveur "+ Constantes.host + " port "+ kConst.Constantes.PORT);
    	       	client = new Socket(Constantes.host, Constantes.PORT);
    	    }
          	catch ( IOException e )
    	    {
    	    	System.out.println(new Date()+ "==> Impossible de se connecter au serveur ");	       		
    	    }      		
     
        } // !constructeur
     
    	public void run(){
    		try{
     
    	    	TrameVehicule tramevehicule = new TrameVehicule(this.client);	    	
     
    	    }catch (Exception e){System.err.println(e);}
    	  }// ! run() method
    }// ! Clients class
    Quelqu'un a deja lance plusieurs fois la meme thread ?

  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 andromeda Voir le message
    le code n'a rien a voir avec ca je pense, c'est au niveau du thread.
    meme si le thread a un code minimum, pour afficher toto ca fait la meme chose.
    Et bien fournit nous un code minimum où le problème se reproduit, que l'on puisse tester de notre coté...

    Car là il n'y a pas de raison que les threads s'exécutent plusieurs fois...

    a++

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 360
    Par défaut
    je lai mis plus haut

    a la place de
    TrameVehicule tramevehicule = new TrameVehicule(this.client);
    il faut mettre
    System.out.println("toto");

    Merci.

  7. #7
    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 andromeda Voir le message
    a la place de
    TrameVehicule tramevehicule = new TrameVehicule(this.client);
    il faut mettre
    System.out.println("toto");
    C'est à dire quelque chose comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public class Clients extends Thread {
     
    	public void run() {
    		System.out.println("toto");
    	}
     
    	public static void main(String[] args) throws InterruptedException {
    		for (int i = 0; i < 5; i++) {      			
      			new Clients().start();   
      			Thread.sleep(30);
      		}
    	}
    }
    Ce qui me donne comme résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    toto
    toto
    toto
    toto
    toto
    Bref tout est normal !

    Bon courage...

    a++

Discussions similaires

  1. Imprimer plusieur fois la meme page d'un etat
    Par Renardo dans le forum Access
    Réponses: 2
    Dernier message: 22/04/2006, 17h14
  2. Formulaire regroupant plusieur fois le meme sous-formulaire?
    Par Goldenduck4000 dans le forum Access
    Réponses: 2
    Dernier message: 18/04/2006, 15h57
  3. Réponses: 2
    Dernier message: 15/03/2006, 18h48
  4. Réponses: 23
    Dernier message: 08/02/2006, 09h15
  5. Réponses: 11
    Dernier message: 02/02/2005, 12h52

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