Č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 (
synchronizedbezstatic): 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 —Classobjektu 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.