Ce blog a la réponse. Cependant, la référence au verrouillage global est facilement trompeuse. Parce que sychoronized utilise l'objet entre parenthèses pour verrouiller, et String.class n'est pas toutes les instances de la classe String , mais un objet, un objet de type Class, donc, si vous utilisez un autre Si vous synchronisez un tel objet de classe, vous obtiendrez des verrous différents.
Vous pouvez vous référer à mon blog
L'utilisation de Synchronized pour la synchronisation des threads
L'application de la synchronisation des threads Synchronisé en mode singleton
Ce blog a la réponse. Cependant, la référence au verrouillage global est facilement trompeuse. Parce que
sychoronized
utilise l'objet entre parenthèses pour verrouiller, etString.class
n'est pas toutes les instances de la classe String , mais un objet, un objet de type Class, donc, si vous utilisez un autre Si vous synchronisez un tel objet de classe, vous obtiendrez des verrous différents.