Sobes.tech
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.