Junior — Middle
Kaip vykdomas blokavimas kviečiant statinį metodą, kuris yra pažymėtas raktažodžiu synchronized?
sobes.tech AI
Atsakymas iš AI
Jei statinis metodas yra deklaruotas su raktu synchronized, užraktas vyksta ant klasės objekto (Class object), o ne ant egzemplioriaus.
Tai reiškia, kad kviečiant tokį metodą, siūlas (thread) įgyja monitorių (lock) klasės, kuriai priklauso metodas, ir kiti siūlai, bandantys iškviesti bet kurį kitą sinchronizuotą statinį šios pačios klasės metodą, lauks, kol bus atlaisvintas užraktas.
Pavyzdys:
public class MyClass {
public static synchronized void staticSyncMethod() {
// metodo kodas
}
}
Čia monitorius yra objektas MyClass.class.