Sobes.tech
Junior — Middle

Como garantir que uma operação seja executada apenas uma vez e evitar sua repetição?

sobes.tech IA

Resposta da IA

Para garantir que uma operação seja executada apenas uma vez e evitar sua execução repetida, podem ser utilizados vários métodos:

  1. Sincronização de threads:

    • Utilizar a palavra-chave synchronized ou bloqueios (Lock) para impedir a execução simultânea da operação.
  2. Flag de estado:

    • Introduzir uma flag booleana que seja definida na primeira execução da operação e verificá-la antes de executar.
  3. Uso de AtomicBoolean ou variáveis volatile:

    • Para controle thread-safe do estado da operação.
  4. O padrão "singleton" ou inicialização preguiçosa:

    • Por exemplo, usando java.util.concurrent.atomic.AtomicBoolean:
import java.util.concurrent.atomic.AtomicBoolean;

public class OneTimeOperation {
    private final AtomicBoolean executed = new AtomicBoolean(false);

    public void execute() {
        if (executed.compareAndSet(false, true)) {
            // Código da operação que deve ser executada apenas uma vez
            System.out.println("Operação realizada");
        } else {
            System.out.println("A operação já foi realizada anteriormente");
        }
    }
}

Dessa forma, a operação será executada apenas uma vez, mesmo que várias threads tentem iniciá-la simultaneamente.