ExpertiDict

Java · Avançado · Inglês · Técnico

volatile

/ˈvɑlətəl/palavra-chave

Modificador de campo que garante visibilidade entre threads e impede reordenação de leituras e escritas, mas não torna atômicas operações compostas como count++.

Onde usar

Aparece em flags de parada, como volatile boolean rodando, e no padrão double-checked locking. Em review: 'isso precisa de volatile'.

Em código

class Worker implements Runnable {
  private volatile boolean rodando = true;
  public void run() {
    while (rodando) { /* trabalho */ }
  }
  void parar() { rodando = false; }
}

Exemplos

Mark the stop flag volatile so the worker sees the change.

Marque a flag de parada como volatile para o worker ver a mudança.

Volatile doesn't make count++ atomic.

Volatile não torna o count++ atômico.

Cuidado

volatile não substitui synchronized: n++ continua sujeito a perda de atualizações. Serve para sinalizar estado simples.

Origem

Do latim volatilis, que voa, instável: o valor pode mudar a qualquer momento.

Veja também

Todos os termos de Java