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.