Sobes.tech
Junior — Middle

Cum funcționează mecanismul synchronized atunci când este utilizat cu o funcție statică în contextul unui monitor?

sobes.tech AI

Răspuns de la AI

Când o metodă este declarată ca synchronized static în Java, monitorul (lock-ul) este preluat la nivel de clasă, nu la nivel de instanță a obiectului. Aceasta înseamnă că, la apelarea unei astfel de metode, firul de execuție blochează monitorul clasei (obiectul Class), iar alți fire nu vor putea executa simultan alte metode statice sincronizate ale aceleiași clase.

Exemplu:

public class Example {
    public static synchronized void staticSyncMethod() {
        // blochează monitorul clasei Example.class
        // secțiune critică
    }
}

Prin urmare, synchronized pe o metodă statică asigură excluderea mutuală la nivelul întregii clase, nu al unui obiect specific. Acest lucru este util atunci când trebuie să sincronizezi accesul la resurse sau variabile statice ale clasei.