Sobes.tech
Junior — Middle

Čime se razlikuju sinhronizovane metode instance i sinhronizovane statičke metode u Javi?

sobes.tech АИ

Одговор од АИ

U Javi postoje dve vrste sinhronizovanih metoda: sinhronizovane metode instance i statičke sinhronizovane metode. Glavna razlika je u objektu na kojem se vrši zaključavanje:

  • Sinhronizovana metoda instance (synchronized bez static): Zaključavanje se vrši na objektu (this) kojem metoda pripada. To znači da ako imate više instanci klase, svaka ima svoje zaključavanje.

  • Statička sinhronizovana metoda (static synchronized): Zaključavanje se vrši na objektu klase — Class objektu koji predstavlja samu klasu. Tako je zaključavanje zajedničko za sve instance klase.

Primer:

public class Example {
    public synchronized void instanceMethod() {
        // zaključava this
    }

    public static synchronized void staticMethod() {
        // zaključava Example.class
    }
}

Ovo znači da dva niti ne mogu istovremeno izvršiti istu sinhronizovanu metodu instance jednog objekta, ali mogu izvršavati različite sinhronizovane metode različitih objekata te klase.

Istovremeno, statička sinhronizovana metoda zaključava celu klasu, tako da u jednom trenutku samo jedna nit može izvršiti bilo koju statičku sinhronizovanu metodu te klase, bez obzira na instance.