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 :

synchronisation des thread


Sujet :

Concurrence et multi-thread Java

  1. #1
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    446
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 446
    Par défaut synchronisation des thread
    bonsoir
    j'ai un thread qui fait appel dans le main a une méthode qui n'est pas syncronized,est ce que quand je mets T1.join() assure la synchronisation.

    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
    class Banquier extends Thread 
    { Compte c;
    public void run(){c.debiter();}
    //il y a une classe compte et une méthode débiter public void debiter(){...}
    }
     
    Main
    compte c1=new compte();
    {Banquier B1=new Banquier("b1",c1);
    Banquier B2=new Banquier("b2",c1);
    B1.start();
    B2.start();
    try{B1.join();
    B2.join();}catch(....)
    }
    merci

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Février 2007
    Messages
    572
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 572
    Par défaut
    Ca ne fait pas la meme chose.

    Le mot cle synchronized permet de s'assurer que deux threads ne vont pas executer le meme bout de code en meme temps.

    Thread.join ne fait qu'attendre la fin de l'execution du thread. Tes deux threads peuvent donc appeler c.debiter en meme temps.

    Si tu veux l'eviter, il faut utiliser encapsuler ton appel dans une methode, dans laquelle tu utiliseras un objet pour la synchronisation.

  3. #3
    Membre émérite
    Avatar de LinkinSelim
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Mars 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Mars 2006
    Messages : 365
    Par défaut
    pour assurer la synchronisation tu peut soit :

    declarer la methode debiter avec le prefixe synchronized

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public synchronized void debiter( ...)
    ou soit utiliser
    synchronized(objetcompte) {
    debiter(...);
    }

    sinon Join() ne sert pas a assurer la synchronisation, aufaite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <BLOC A>
    t.join(); 
    <BLOC B>
    sert a attendre la fin du thread t pour continuer l'execution du bloc B

    ++

Discussions similaires

  1. synchronisation des threads a l'aide des moniteurs
    Par rdakpapdak dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 10/04/2008, 17h30
  2. synchronisation des thread
    Par gentelmand dans le forum Concurrence et multi-thread
    Réponses: 1
    Dernier message: 29/12/2007, 10h06
  3. [Thread] Synchroniser des threads
    Par GLDavid dans le forum Concurrence et multi-thread
    Réponses: 3
    Dernier message: 24/06/2006, 16h34
  4. Question sur la synchronisation des threads.
    Par sebastieng dans le forum Langages de programmation
    Réponses: 4
    Dernier message: 07/12/2005, 15h55

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