Quelle est la différence entre les méthodes synchronisées d'instance et les méthodes synchronisées statiques en Java?
sobes.tech IA
Réponse de l'IA
En Java, il existe deux types de méthodes synchronisées : les méthodes synchronisées d’instance et les méthodes synchronisées statiques. La principale différence réside dans l’objet sur lequel le verrouillage est effectué :
-
Méthode synchronisée d’instance (
synchronizedsansstatic) : Le verrouillage se fait sur l’objet (this) auquel appartient la méthode. Cela signifie que si vous avez plusieurs instances de la classe, chacune a son propre verrouillage. -
Méthode synchronisée statique (
static synchronized) : Le verrouillage se fait sur l’objet de la classe — l’objetClassqui représente la classe elle-même. Ainsi, le verrouillage est partagé par toutes les instances de la classe.
Exemple :
public class Example {
public synchronized void instanceMethod() {
// verrouille this
}
public static synchronized void staticMethod() {
// verrouille Example.class
}
}
Cela signifie que deux threads ne peuvent pas exécuter simultanément le même méthode synchronisée d’instance d’un objet, mais peuvent exécuter des méthodes synchronisées différentes de différents objets de cette classe.
En même temps, la méthode synchronisée statique bloque toute la classe, donc à un moment donné, un seul thread peut exécuter n’importe quelle méthode synchronisée statique de cette classe, indépendamment des instances.