Sobes.tech
Junior — Middle

Poderia explicar o princípio de funcionamento da variável volatile e em que casos o seu uso é justificado?

sobes.tech IA

Resposta da IA

A variável com modificador volatile em Java (e Android) garante que a leitura e escrita dessa variável ocorrerão diretamente na memória principal, e não no cache do processador. Isso é importante em ambientes multithread para que as mudanças de uma thread sejam visíveis para outras.

Sem volatile, uma thread pode ver um valor desatualizado da variável, pois ela é armazenada no cache local. Com volatile, o seguinte acontece:

  • A escrita na variável torna-se imediatamente visível para outras threads.
  • A leitura sempre obtém o valor atual da memória.

O uso é justificado quando é necessário garantir a visibilidade das mudanças na variável entre threads sem usar sincronizações pesadas, por exemplo, para flags de término ou estado.

Exemplo:

volatile boolean isRunning = true;

// Em uma thread
while (isRunning) {
    // trabalho
}

// Em outra thread
isRunning = false; // garantirá que a primeira thread veja a mudança

No entanto, volatile não garante a atomicidade de operações complexas (por exemplo, incremento), para isso, são necessários outros mecanismos de sincronização.