Pourquoi avez-vous besoin d'autant de cadenas ? Étant donné que différents verrous occupent différentes ressources, tout est conçu pour utiliser moins de ressources et accélérer l'exécution du programme.
Première question. Verrouillage biaisé : après des recherches antérieures, l'auteur de Hotspot a constaté que dans la plupart des cas, non seulement il n'y a pas de concurrence multithread pour les verrous, mais qu'il est également toujours acquis plusieurs fois par le même thread afin d'en faire le coût. les threads acquérant des verrous inférieurs, des verrous biaisés ont été introduits. Convient aux scénarios dans lesquels un thread accède à un bloc de code synchronisé.
Verrouillage léger : utilisé dans des scénarios où la concurrence n'est pas très intense ou où les blocs de code synchronisés s'exécutent rapidement. Il ne bloquera pas mais tournera. (Après avoir tourné plusieurs fois, je n'ai toujours pas obtenu le verrou et je ne l'ai pas amélioré en un verrou lourd)
Le deuxième problème est que le verrou léger n'a pas obtenu le verrou après plusieurs rotations (la rotation peut être comprise comme un cycle), et il se dilatera quel que soit le nombre de threads.
Ce qui précède est ma compréhension personnelle, veuillez vous référer à cet article d'Infoq.
Pourquoi avez-vous besoin d'autant de cadenas ? Étant donné que différents verrous occupent différentes ressources, tout est conçu pour utiliser moins de ressources et accélérer l'exécution du programme.
Première question.
Verrouillage biaisé : après des recherches antérieures, l'auteur de Hotspot a constaté que dans la plupart des cas, non seulement il n'y a pas de concurrence multithread pour les verrous, mais qu'il est également toujours acquis plusieurs fois par le même thread afin d'en faire le coût. les threads acquérant des verrous inférieurs, des verrous biaisés ont été introduits. Convient aux scénarios dans lesquels un thread accède à un bloc de code synchronisé.
Verrouillage léger : utilisé dans des scénarios où la concurrence n'est pas très intense ou où les blocs de code synchronisés s'exécutent rapidement. Il ne bloquera pas mais tournera. (Après avoir tourné plusieurs fois, je n'ai toujours pas obtenu le verrou et je ne l'ai pas amélioré en un verrou lourd)
Le deuxième problème est que le verrou léger n'a pas obtenu le verrou après plusieurs rotations (la rotation peut être comprise comme un cycle), et il se dilatera quel que soit le nombre de threads.
Ce qui précède est ma compréhension personnelle, veuillez vous référer à cet article d'Infoq.