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

avec Java Discussion :

[Synchronization] Plusieurs façon de faire de la synchronization


Sujet :

avec Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 106
    Points : 78
    Points
    78
    Par défaut [Synchronization] Plusieurs façon de faire de la synchronization
    Bonjour,

    J'ai cherché sur internet et je pense détenir la bonne réponse, mais je voulais avoir confirmation.

    Donc, lorsque dans une classe, on déclare une méthode "synchronized", cela signifie que l'on pose un verrou sur l'objet qui comporte cette même méthode.

    Finalement les solutions ci-dessous sont identiques:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    MaClasse{
             public synchronized toto(){
                    // blabla
             }
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    MaClasse{
           public toto(){
                   synchronized(this){
                        //blabla
                    }
           }
    }

    Dans un main:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    MaClasse o = new MaClasse();
    synchronized(o){
       o.toto(); // ou la méthode n'est pas du tout synchronized
    }

    J'attends vos validations pour me dire que j'ai compris .

    Bonne journée à tous,
    Cordialement.

  2. #2
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Oui c'est tout à fait cela !

    A noter que pour les méthodes static le lock utilise le type de la classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class MaClasse {
             public static synchronized void method() {
                    // blabla
             }
    }
    Est équivalent à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    class MaClasse {
             public static void method() {
                    synchronized (MaClass.class) {
                          // blabla
                    }
             }
    }

    Et que les locks sont réentrant (si tu as déjà pris un verrou, tu peux le reprendre sans te bloquer toi même).

    a++


    a++

  3. #3
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    J'ajouterai qu'il faut réduire au minimum nécessaire la portée de la synchronisation. Par exemple, il ne faut pas abuser du bloc synchronized(this). On peut parfois remplacer par un bloc synchronized(_attribut) sur un attribut uniquement.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 106
    Points : 78
    Points
    78
    Par défaut
    Merci pour vos réponses.

    Effectivement, je prends note de ta remarque CheryBen.

    Les exemples que j'ai cité sont pour verrouiller l'objet entièrement, et c'est sur qu'il faut être vigilant quand-à son intégration dans son code, car cela peut avoir des performances désastreuses si l'objet verrouillé est sollicité souvent...

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

Discussions similaires

  1. DLL plusieur façons de faire possible ?
    Par websurfeur dans le forum C++
    Réponses: 12
    Dernier message: 15/09/2006, 15h39
  2. Plusieurs utilisateurs, comment faire ?
    Par martonpylon12 dans le forum Access
    Réponses: 3
    Dernier message: 12/09/2006, 17h09
  3. Réponses: 8
    Dernier message: 29/08/2006, 00h56
  4. Réponses: 7
    Dernier message: 29/04/2006, 15h40
  5. Est ce bien la meilleure façon de faire un histogramme ?
    Par rvzip64 dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 10/05/2005, 12h41

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