Sobes.tech
Junior — Middle

Milyen esetekben kell a volatile kulcsszót használni Java-ban?

sobes.tech MI

Válasz az MI-től

A volatile kulcsszó Java-ban olyan változót jelöl, amelynek értéke több szál által egyidejűleg módosulhat. Biztosítja, hogy ennek a változónak az olvasása és írása közvetlenül a fő memóriából történjen, nem a szál gyorsítótárából, ezáltal garantálva a változások láthatóságát a szálak között.

A volatile használata akkor indokolt, ha:

  • A változó egy szálban változhat, és egy másik szálban olvasható.
  • Nem szükséges komplex műveletek atomossága (pl. növelés), csak a érték aktuális állapotának biztosítása.
  • El akarjuk kerülni a nehezebb szinkronizációs mechanizmusokat (pl. synchronized), amikor elegendő a változások láthatóságának biztosítása.

Példa:

class Flag {
    private volatile boolean stop = false;

    public void requestStop() {
        stop = true;
    }

    public void run() {
        while (!stop) {
            // munka
        }
    }
}

Itt volatile nélkül a run()-t végző szál nem biztos, hogy észreveszi a stop változását.