Javaда мисалдар жана статикалык синхрондоштурулган ыкмаларынын айырмасы эмнеде?
sobes.tech AI
AIден жооп
Javaда эки түрдүү синхрондоштурулган ыкмалар бар: синхрондоштурулган ыкмалардын негизги айырмасы — кайсы объектте блоктоо болот:
-
Ыкма объекттин синхрондоштурулган (
synchronizedжокstatic): Блоктоо объектте (this) болот, ага ыкма тиешелүү. Бул дегенде, эгерде сизде бир нече класс мисалдары болсо, ар биринин өзүнүн блоктоосу болот. -
Статикалык синхрондоштурулган ыкма (
static synchronized): Блоктоо класс объектисинде болот —Classобъектисинде, ал класс өзү менен көрсөтүлөт. Ошентип, блоктоо бардык класс мисалдары үчүн жалпы болот.
Мисал:
public class Example {
public synchronized void instanceMethod() {
// this блоктолот
}
public static synchronized void staticMethod() {
// Example.class блоктолот
}
}
Бул дегенде, эки жип бир убакта бир эле объекттин синхрондоштурулган ыкмасын аткара албайт, бирок ар башка объекттердин ар башка ыкмаларын аткара алышат.
Ошол эле учурда, статикалык синхрондоштурулган ыкма класс толугу менен блоктолот, ошондуктан бир убакта гана бир жип бул класстын кандайдыр бир статикалык синхрондоштурулган ыкмасын аткара алат, объекттерден көз карандысыз.