Junior — Middle
Comment garantir qu'une opération ne soit effectuée qu'une seule fois et éviter sa répétition?
sobes.tech IA
Réponse de l'IA
Pour garantir qu'une opération ne s'exécute qu'une seule fois et éviter sa réexécution, plusieurs approches peuvent être utilisées :
-
Synchronisation des threads :
- Utiliser le mot-clé
synchronizedou des verrouillages (Lock) pour empêcher le lancement simultané de l'opération.
- Utiliser le mot-clé
-
Drapeau d'état :
- Introduire un drapeau booléen qui est défini lors de la première exécution de l'opération, et le vérifier avant de l'exécuter.
-
Utilisation de
AtomicBooleanou de variablesvolatile:- Pour un contrôle thread-safe de l'état de l'opération.
-
L'idiome du "singleton" ou de l'initialisation paresseuse :
- Par exemple, en utilisant
java.util.concurrent.atomic.AtomicBoolean:
- Par exemple, en utilisant
import java.util.concurrent.atomic.AtomicBoolean;
public class OneTimeOperation {
private final AtomicBoolean executed = new AtomicBoolean(false);
public void execute() {
if (executed.compareAndSet(false, true)) {
// Code de l'opération qui doit s'exécuter une seule fois
System.out.println("Opération effectuée");
} else {
System.out.println("L'opération a déjà été effectuée auparavant");
}
}
}
Ainsi, l'opération ne sera exécutée qu'une seule fois, même si plusieurs threads tentent de la lancer simultanément.