Чӣ гуна ҷараён назорати объектро ба даст меорад ва чӣ гуна дар муҳити бисёрсоҳавӣ он ба даст меояд?
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) онро ба даст оред, ки дастрасии бехатари ба ҳолати он таъмин мекунад.