Sobes.tech
Junior — Middle

Op welk object wordt het vergrendelingsmechanisme uitgevoerd bij gebruik van het sleutelwoord synchronized?

sobes.tech AI

Antwoord van AI

In Java, afhankelijk van de context, hangt het lock-mechanisme bij gebruik van het sleutelwoord synchronized:

  • Als synchronized wordt toegepast op een niet-statische methode, gebeurt de lock op het object (this) waarop de methode wordt aangeroepen.
  • Als synchronized wordt toegepast op een statische methode, gebeurt de lock op het klasse-object (Class), dat wil zeggen op de klasse zelf.
  • Als een blok synchronized(obj) wordt gebruikt, gebeurt de lock op het object obj.

Voorbeeld:

public class Example {
    public synchronized void instanceMethod() {
        // lock op this
    }

    public static synchronized void staticMethod() {
        // lock op Example.class
    }

    public void blockMethod() {
        Object lock = new Object();
        synchronized(lock) {
            // lock op lock
        }
    }
}