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 :

thread en java


Sujet :

Java

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 262
    Points : 157
    Points
    157
    Par défaut thread en java
    salut je revisse un peu le multithreding et je suis encore débutant.
    voila deux exemple qui donne deux résultat différent et je comprends pas la cause
    si vous pourriez m'expliquer:
    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
    class Repetiteur {
      private String chaine ;
      public Repetiteur(String chaine) {
        super() ;
        this.chaine = chaine ;
      }
      public void run() {
         System.out.println(chaine) ;
         System.out.println(chaine) ;
         System.out.println(chaine) ;
      }
    }
    public class Test_11 {
     public static void main(String [] args) {
       new Repetiteur("bonjour").run() ;
       new Repetiteur("le").run() ;
       new Repetiteur("monde").run() ;
       System.out.println("fin...") ;
     }
    }
    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
    class Repetiteur extends Thread  {
      private String chaine ;
      public Repetiteur(String chaine) {
        super() ;
        this.chaine = chaine ;
      }
      public void run() {
         System.out.println(chaine) ;
         System.out.println(chaine) ;
         System.out.println(chaine) ;
      }
    }
    public class Test_01 {
     public static void main(String [] args) {
       new Repetiteur("bonjour").start() ;
       new Repetiteur("le").start() ;
       new Repetiteur("monde").start() ;
       System.out.println("fin...") ;
    } }
    je veux que c'est le même code qui s’exécute dans les deux code sauf a la place de ru on a mis start.
    et je vois pas la différence que peu faire start sachant qu'elle apel dan,s son corps la méthode run.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par momedalhouma Voir le message
    voila deux exemple qui donne deux résultat différent et je comprends pas la cause
    Pour rappel, le principe même des threads est que tout arrive en même temps, et donc dans un ordre imprévisible.

    Citation Envoyé par momedalhouma Voir le message
    je veux que c'est le même code qui s’exécute dans les deux code sauf a la place de ru on a mis start.
    Plus important, dans le premier exemple, Repetiteur n'a rien à voir avec Thread.

    Citation Envoyé par momedalhouma Voir le message
    et je vois pas la différence que peu faire start sachant qu'elle apel dan,s son corps la méthode run.
    Dans ta méthode main(), tu fais appel à println(). Donc tu ne fais pas la différence entre main() et println() ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 262
    Points : 157
    Points
    157
    Par défaut
    merci thelvin
    et désolé pour mon écriture .
    pour ta troisième observation dans le code de main je vois qu'on fait une instaciation de la classe ,et on passe comme argument les mots.
    tout a fais raison pour les deux réponses en haut, j'ai pas une bonne observation du code.une autre question avec cet exemple:
    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
    class Repetiteur extends Thread  {
      private String chaine ;
      public Repetiteur(String chaine) {
        super() ;
        this.chaine = chaine ;
      }
      public void run() {
        setPriority(Thread.MAX_PRIORITY) ;
        System.out.println(chaine) ;
        setPriority(Thread.NORM_PRIORITY) ;
        System.out.println(chaine) ;
        setPriority(Thread.MIN_PRIORITY) ;
        System.out.println(chaine) ;
      }
    }
    public class Test_02 {
     public static void main(String [] args) {
       Thread t1,t2,t3 ;
       t1 = new Repetiteur("bonjour") ;
       t2 = new Repetiteur("le") ;
       t3 = new Repetiteur("monde") ;
       t1.start() ;
       t2.start() ;
       t3.start() ;
       System.out.println("fin...") ;
     }
    }
    là ça me donne un autre résultat. je sais que c'est a cause de la priorité mais je sais pas comment ça fonctionne , précisément a quel thread on donne le droit de s’exécuter.
    et merci pour toi ce n'est pas la première fois que tu me réponds

  4. #4
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 073
    Points : 7 977
    Points
    7 977
    Par défaut
    Juste un "truc" (si tjrs valable) quand tu joues avec les thread, n'écrit pas dans la console avec System.out mai s System.err
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Exception in thread main ! (Java+MySQL)
    Par condor_01 dans le forum Général Java
    Réponses: 12
    Dernier message: 24/04/2008, 09h25
  2. thread en java
    Par tarik1099 dans le forum Interfaces Graphiques en Java
    Réponses: 4
    Dernier message: 22/05/2007, 23h35
  3. probleme avec thread en java
    Par manelinfo dans le forum Concurrence et multi-thread
    Réponses: 5
    Dernier message: 20/05/2007, 18h27
  4. Suppression et lancement d'un thread en java
    Par noutnout53 dans le forum Concurrence et multi-thread
    Réponses: 3
    Dernier message: 13/03/2006, 11h05
  5. Exception in thread "main" java.lang.ArrayIndexOut
    Par Poseidon62 dans le forum Concurrence et multi-thread
    Réponses: 6
    Dernier message: 04/11/2005, 01h38

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