Sobes.tech
Junior — Middle

Можете ли да објасните сврху и принцип рада кључне речи volatile у контексту развоја за Android?

sobes.tech АИ

Одговор од АИ

Ključna reč volatile u Javi (i, shodno tome, u razvoju za Android) se koristi za obezbeđivanje vidljivosti promena promenljive između niti.

Kada je promenljiva deklarisana kao volatile, to garantuje da:

  • Čitanje promenljive uvek će se vršiti iz glavne memorije, a ne iz keša niti.
  • Pisanje u promenljivu odmah postaje vidljivo drugim nitima.

Ovo je važno u višestrukim nitnim okruženjima Androida, kako bi se izbegle situacije u kojima je jedna nit promenila vrednost, a druga i dalje vidi staru.

Primer:

private volatile boolean isRunning = true;

public void stop() {
    isRunning = false;
}

public void run() {
    while (isRunning) {
        // obavljanje posla
    }
}

Bez volatile, nit koja izvršava run() može ne videti promenu u isRunning i ući u beskonačnu petlju.

Međutim, volatile ne garantuje atomarnost složenih operacija, za to su potrebni drugi mehanizmi sinhronizacije.