Sobes.tech
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:

  1. Thread-synchronisatie:

    • Gebruik maken van het sleutelwoord synchronized of locks (Lock) om gelijktijdige uitvoering van de operatie te voorkomen.
  2. Statusvlag:

    • Een booleaanse vlag invoeren die wordt ingesteld bij de eerste uitvoering van de operatie en deze controleren voordat u deze uitvoert.
  3. Gebruik van AtomicBoolean of volatile variabelen:

    • Voor thread-veilige controle van de status van de operatie.
  4. De "singleton"-idioma of lazy initialisatie:

    • Bijvoorbeeld met behulp van 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)) {
            // 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.