Junior — Middle
Môžete vysvetliť účel a princíp fungovania kľúčového slova volatile v kontexte vývoja pre Android?
sobes.tech AI
Odpoveď od AI
Kľúčové slovo volatile v Jave (a teda aj v Android vývoji) sa používa na zabezpečenie viditeľnosti zmien premennej medzi vláknami.
Keď je premenná deklarovaná ako volatile, garantuje to, že:
- Čítanie premennej sa vždy vykonáva z hlavnej pamäti, nie z cache vlákna.
- Zápis do premennej je okamžite viditeľný pre ostatné vlákna.
Toto je dôležité v prostredí s viacerými vláknami v Androide, aby sa predišlo situáciám, keď jedno vlákno zmenilo hodnotu, ale iné stále vidí starú.
Príklad:
private volatile boolean isRunning = true;
public void stop() {
isRunning = false;
}
public void run() {
while (isRunning) {
// vykonávame prácu
}
}
Bez volatile môže vlákno, ktoré vykonáva run(), nevidieť zmenu v isRunning a vstúpiť do nekonečnej slučky.
Avšak, volatile nezaručuje atomickosť zložitých operácií, na čo sú potrebné iné mechanizmy synchronizácie.