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:
-
Sincronização de threads:
- Utilizar a palavra-chave
synchronizedou bloqueios (Lock) para impedir a execução simultânea da operação.
- Utilizar a palavra-chave
-
Flag de estado:
- Introduzir uma flag booleana que seja definida na primeira execução da operação e verificá-la antes de executar.
-
Uso de
AtomicBooleanou variáveisvolatile:- Para controle thread-safe do estado da operação.
-
O padrão "singleton" ou inicialização preguiçosa:
- Por exemplo, usando
java.util.concurrent.atomic.AtomicBoolean:
- Por exemplo, usando
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.