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 :

Utilisation du threads


Sujet :

Java

  1. #1
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 40
    Par défaut Utilisation du threads
    Bonjour j'ai lu plusieurs FAQ et Tuto et j'ai encore du mal à voir comment fonctionne le thread aussi j'aimerai que vous puissiez m'aider sur ce point suivant.

    Voici un bout de ma méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    			for(int i = 0; i<o.Letters.length;i++)
    			{
    				this.sicl = new SEGINCONTEXTSLIST();
    				fromBurstTrieToSICL(o.Letters[i]);	
    				if(this.sicl.size()>0)
    				{
    					this.sicl.saveAppendToFile(Global.fileSegInContextsFolder()+Global.corpusName+"_"+CI.getChar(i)+".sgt");
    					this.sicl.clear();System.out.println("End Writing");
    				}				
    			}

    Voilà je voudrais faire que pour chaque boucle un thread soit créer pour faire les tâches qui sont à l'intérieur dans ce for.

    Bon j'ai un peu du mal à m'exprimer donc si vous voulez bien m'aider mais que vous m'avez pas compris dites le moi.
    En tout cas merci d'avance.

  2. #2
    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 : 44
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    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
    for(int i = 0; i<o.Letters.length;i++)
    {
      new Thread( new Runnable()
      {
        public void run()
        {
          this.sicl = new SEGINCONTEXTSLIST();
          fromBurstTrieToSICL(o.Letters[i]);	
          if(this.sicl.size()>0)
          {
            this.sicl.saveAppendToFile(Global.fileSegInContextsFolder()
              + Global.corpusName+"_"+CI.getChar(i)+".sgt");
            this.sicl.clear();System.out.println("End Writing");
          }
        }
      }).start();
    }
    ATTENTION : prend garde de ne pas faire trop de thread en fonction de ta machine. Multiplier les Threads n'est pas forcément un gage de vitesse. En fonction de ta machine, du nombre de processeurs et de coeurs, il te faut tuner proprement, et faire quelques tests. En augmentant progressivement les Threads, tu vas t'apercevoir que l'application sera de plus en plus rapide, et enfin, au bout d'un nombre élevé de Threads, les performances vont s'effondrer progressivement jusqu'au freeze de la machine (la courbe aura la même forme que la courbe de puissance pour un moteur thermique).
    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.

  3. #3
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 40
    Par défaut
    Merci beaucoup je vais essayer.

    Mais effectivement le probleme c'est que ma machine est pauvre en performance alors je verrais ce que ça donne.

    Une dernière question si je veux savoir, quand la boucle est finie, si tous mes threads sont terminé je fais comment ?

  4. #4
    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 : 44
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Citation Envoyé par fanzyride Voir le message
    Une dernière question si je veux savoir, quand la boucle est finie, si tous mes threads sont terminé je fais comment ?
    Je ne comprends pas ta question.
    Dans l'exemple donné, les threads démarrent mais il n'y a aucune gestion pour l'attente de fin.
    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.

  5. #5
    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 : 44
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Après relecture, je viens de comprendre
    Tu peux par exemple mettre tous les Threads dans un ArrayList. Après la boucle "for", tu parcours ton ArrayList de Thread et tu fais un "join()" sur chaque Thread. A la fin de la boucle de parcours de la liste, tu es sûr que tous les Threads se sont terminés.
    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.

  6. #6
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 40
    Par défaut
    Merci ça marche juste quelques paramètres à changer (le i et le o dans le programme qui n'étaient pas atteints) et un petit sleep pour éviter les conflits

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

Discussions similaires

  1. [VBA] utilisation de thread
    Par nemesys971 dans le forum VBA Access
    Réponses: 19
    Dernier message: 10/10/2008, 10h49
  2. Comment utiliser les Threads en VC++?
    Par mambo dans le forum MFC
    Réponses: 2
    Dernier message: 16/06/2006, 14h04
  3. BeginInvoke (utiliser les threads)
    Par the big ben 5 dans le forum Delphi
    Réponses: 6
    Dernier message: 16/05/2006, 18h30
  4. Utilisation des threads
    Par Valinor dans le forum Linux
    Réponses: 2
    Dernier message: 30/11/2005, 16h41
  5. Utilisations des Threads
    Par phoenix440 dans le forum Réseau
    Réponses: 15
    Dernier message: 21/08/2005, 17h19

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