Sobes.tech
Junior — Middle

Můžete vysvětlit účel a princip fungování klíčového slova volatile v kontextu vývoje pro Android?

sobes.tech AI

Odpověď od AI

Klíčové slovo volatile v jazyce Java (a tím i v vývoji pro Android) se používá k zajištění viditelnosti změn proměnné mezi vlákny.

Když je proměnná deklarována jako volatile, garantuje to, že:

  • Čtení proměnné se vždy provádí z hlavní paměti, nikoli z cache vlákna.
  • Zápis do proměnné je okamžitě viditelný pro ostatní vlákna.

To je důležité v prostředí s více vlákny v Androidu, aby se předešlo situacím, kdy jedno vlákno změnilo hodnotu, ale jiné stále vidí starou.

Příklad:

private volatile boolean isRunning = true;

public void stop() {
    isRunning = false;
}

public void run() {
    while (isRunning) {
        // vykonávat práci
    }
}

Bez volatile může vlákno, které provádí run(), nevidět změnu isRunning a vstoupit do nekonečné smyčky.

Nicméně volatile nezaručuje atomaritu složitých operací, pro které jsou potřeba jiné mechanismy synchronizace.