Ток объектке көзөмөлдү кантип алат жана көп агымдуу чөйрөдө анын кармалышы кандай болот?
sobes.tech AI
AIден жооп
Көпжолдуу чөйрөдө, жип ресурска эксклюзивдүү кирүү камсыз кылган синхрондоштуруу механизмдери аркылуу объектке көзөмөл жүргүзөт. Androidдо (жана жалпы Javaда) бул үчүн synchronized, ReentrantLock жана башка сыяктуу ачкыч сөздөр жана класстар колдонулат.
Жип объектке кирүүнү каалаганда, ал ошол объекттин мониторун (lock) кармоого аракет кылат. Эгер монитор бош болсо, жип көзөмөлдү алат жана объект менен операцияларды аткара алат. Эгер монитор башка жип тарабынан колдонулуп жатса, учурдагы жип блоктолот жана бошотулушун күтөт.
Synchronized менен мисал:
public class Counter {
private int count = 0;
public synchronized void increment() {
count++;
}
public synchronized int getCount() {
return count;
}
}
Бул жерде, increment жана getCount методдору синхрондоштурулган, бул гана бир жип ошол учурда бул методдорду аткара алат дегенди билдирет жана атаандаштык шарттарды алдын алат.
Демек, объектти кармоо деген — ошол объекттин мониторун (lock) алуу, ал анын абалына коопсуз жана жиптердин коопсуз кирүүсүн камсыз кылуу.