Sobes.tech
Junior — Middle

Kā tiek veikta bloķēšana, izsaucot statisko metodi, kas ir deklarēts ar atslēgas vārdu synchronized?

sobes.tech AI

Atbilde no AI

Ja statiskā metode ir deklarēta ar atslēgas vārdu synchronized, bloķēšana notiek uz klases objekta (Class object), nevis uz instanci.

Tas nozīmē, ka, izsaucot šādu metodi, pavedienis (thread) iegūst monitora (lock) no klases, kurai pieder metode, un citi pavedieni, kas mēģina izsaukt jebkuru citu sinhronizētu statisko metodi no tās pašas klases, gaidīs, kamēr atbrīvosies bloķēšana.

Piemērs:

public class MyClass {
    public static synchronized void staticSyncMethod() {
        // metodes kods
    }
}

Šeit monitors ir objekts MyClass.class.