Maison > Java > Synchroniser deux fois sur le même objet ?

Synchroniser deux fois sur le même objet ?

WBOY
Libérer: 2024-02-06 11:45:09
avant
579 Les gens l'ont consulté
Contenu de la question

J'aimerais savoir si en java, si je synchronise deux fois sur le même objet, il y aura un comportement bizarre ?

La scène est la suivante

pulbic class SillyClassName {

    object moo;
    ...
    public void method1(){
        synchronized(moo)
        {
            ....
            method2();
            ....
        }
    }

    public void method2(){
        synchronized(moo)
        {
            doStuff();
        }
    }
}
Copier après la connexion

Les deux méthodes utilisent cet objet et se synchronisent dessus. Lorsque la première méthode appelle la deuxième méthode, la deuxième méthode s’arrêtera-t-elle car elle est verrouillée ?

Je ne pense pas puisque c'est le même fil de discussion, mais je ne sais pas si d'autres résultats étranges se produisent.


La bonne réponse


peut être saisie à nouveau

Les blocs synchronisés utilisent des verrous réentrants, ce qui signifie que si un thread détient déjà un verrou, il peut le réacquérir sans aucun problème. Votre code fonctionnera donc comme prévu.

Voir Tutoriel Java en bas de la page Verrouillages intrinsèques et synchronisation.

Citation en janvier 2015...

Je pense que nous devons utiliser un verrou réentrant pour accomplir ce que vous voulez faire. Voici un extrait de http: //docs.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/locks/ReentrantLock.html.

Bien que je ne l'ai pas essayé, je pense que si vous voulez faire ce qui précède, vous devez utiliser un verrou réentrant.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal