Sobes.tech
Junior — Middle

Hogyan történik a zárolás, amikor egy szinkronizált kulcsszóval deklarált statikus metódust hívunk?

sobes.tech MI

Válasz az MI-től

Ha egy statikus metódus synchronized kulcsszóval van deklarálva, akkor a zárolás a osztály objektumán (Class object) történik, nem az példányon.

Ez azt jelenti, hogy ilyen metódus hívásakor a szál (thread) megszerzi az osztály monitorját (lock), és más szálak, amelyek megpróbálják meghívni ugyanannak az osztálynak bármely más szinkronizált statikus metódusát, várni fognak a zárolás felszabadulására.

Példa:

public class MyClass {
    public static synchronized void staticSyncMethod() {
        // metódus kódja
    }
}

Itt a monitor a MyClass.class objektum.