Sobes.tech
Junior — Middle

Kako funkcioniše mehanizam synchronized kada se koristi sa statičkom funkcijom u kontekstu monitora?

sobes.tech АИ

Одговор од АИ

Kada je metoda deklarisana kao synchronized static u Javi, monitor (zaključavanje) se preuzima na nivou klase, a ne na nivou objekta instance. To znači da, prilikom poziva takve metode, nit blokira monitor klase (objekat Class), i nijedna druga nit ne može istovremeno izvršavati druge statičke synchronized metode te iste klase.

Primer:

public class Example {
    public static synchronized void staticSyncMethod() {
        // blokira monitor klase Example.class
        // kritična sekcija
    }
}

Dakle, synchronized na statičkoj metodi obezbeđuje međusobno isključivanje na nivou cele klase, a ne određenog objekta. Ovo je korisno kada je potrebno sinhronizovati pristup statičkim resursima ili promenljivima klase.