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.