Sobes.tech
Junior — Middle

Melyik objektumon történik a zárolási mechanizmus a synchronized kulcsszó használatakor?

sobes.tech MI

Válasz az MI-től

Java-ban, a synchronized kulcsszó használatakor a zárolási mechanizmus a kontextustól függ:

  • Ha a synchronized nem statikus módszerre alkalmazzuk, akkor a zárolás az objektumon (this) történik, amelyen a módszer hívásra kerül.
  • Ha a synchronized statikus módszerre alkalmazzuk, akkor a zárolás a osztály objektumán (Class) történik, azaz az osztályon.
  • Ha egy synchronized(obj) blokkot használunk, akkor a zárolás az obj objektumon történik.

Példa:

public class Example {
    public synchronized void instanceMethod() {
        // zárolás a this-en
    }

    public static synchronized void staticMethod() {
        // zárolás az Example.class-on
    }

    public void blockMethod() {
        Object lock = new Object();
        synchronized(lock) {
            // zárolás a lock-on
        }
    }
}