Java-da sinxronlaşdırılmış nümunə metodları və statik sinxronlaşdırılmış metodlar arasındakı fərq nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Java-da sinxronlaşdırılmış iki növ metod var: nümunə sinxronlaşdırılmış metodlar və statik sinxronlaşdırılmış metodlar. Əsas fərq, hansı obyekt üzərində bloklama baş verdiyidir:
-
Nümunə sinxronlaşdırılmış metod (
synchronizedolmadanstatic): Bloklama, metoda aid olan obyekt (this) üzərində baş verir. Bu, çox nümunə olsa, hər birinin öz bloklaması olduğunu göstərir. -
Statik sinxronlaşdırılmış metod (
static synchronized): Bloklama, sinif obyekti —Classobyekti üzərində baş verir, bu obyekt sinfi təmsil edir. Beləliklə, bloklama bütün sinif nümunələri üçün ümumi olur.
Nümunə:
public class Example {
public synchronized void instanceMethod() {
// this bloklanır
}
public static synchronized void staticMethod() {
// Example.class bloklanır
}
}
Bu, iki axının eyni obyektin sinxronlaşdırılmış metodunu eyni vaxtda icra edə bilməyəcəyini, lakin müxtəlif obyektlərin müxtəlif sinxronlaşdırılmış metodlarını icra edə biləcəyini göstərir.
Eyni zamanda, statik sinxronlaşdırılmış metod bütün sinfi bloklayır, ona görə də, bir vaxtda yalnız bir axın bu sinfin hər hansı bir statik sinxronlaşdırılmış metodunu icra edə bilər, obyektlərdən asılı olmayaraq.