Junior — Middle
Можете ли да објасните сврху и принцип рада кључне речи volatile у контексту развоја за Android?
sobes.tech АИ
Одговор од АИ
Ključna reč volatile u Javi (i, shodno tome, u razvoju za Android) se koristi za obezbeđivanje vidljivosti promena promenljive između niti.
Kada je promenljiva deklarisana kao volatile, to garantuje da:
- Čitanje promenljive uvek će se vršiti iz glavne memorije, a ne iz keša niti.
- Pisanje u promenljivu odmah postaje vidljivo drugim nitima.
Ovo je važno u višestrukim nitnim okruženjima Androida, kako bi se izbegle situacije u kojima je jedna nit promenila vrednost, a druga i dalje vidi staru.
Primer:
private volatile boolean isRunning = true;
public void stop() {
isRunning = false;
}
public void run() {
while (isRunning) {
// obavljanje posla
}
}
Bez volatile, nit koja izvršava run() može ne videti promenu u isRunning i ući u beskonačnu petlju.
Međutim, volatile ne garantuje atomarnost složenih operacija, za to su potrebni drugi mehanizmi sinhronizacije.