Junior — Middle
Hoe kun je ervoor zorgen dat een bewerking slechts één keer wordt uitgevoerd en herhaling wordt voorkomen?
sobes.tech AI
Antwoord van AI
Om ervoor te zorgen dat een operatie slechts één keer wordt uitgevoerd en herhaald uitvoeren te voorkomen, kunnen verschillende benaderingen worden gebruikt:
-
Thread-synchronisatie:
- Gebruik maken van het sleutelwoord
synchronizedof locks (Lock) om gelijktijdige uitvoering van de operatie te voorkomen.
- Gebruik maken van het sleutelwoord
-
Statusvlag:
- Een booleaanse vlag invoeren die wordt ingesteld bij de eerste uitvoering van de operatie en deze controleren voordat u deze uitvoert.
-
Gebruik van
AtomicBooleanofvolatilevariabelen:- Voor thread-veilige controle van de status van de operatie.
-
De "singleton"-idioma of lazy initialisatie:
- Bijvoorbeeld met behulp van
java.util.concurrent.atomic.AtomicBoolean:
- Bijvoorbeeld met behulp van
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 van de operatie die slechts één keer mag worden uitgevoerd
System.out.println("Operatie uitgevoerd");
} else {
System.out.println("Operatie is al eerder uitgevoerd");
}
}
}
Op deze manier wordt de operatie slechts één keer uitgevoerd, zelfs als meerdere threads proberen deze gelijktijdig te starten.