Sobes.tech
Junior — Middle

Kako osigurati da se operacija izvrši samo jednom i sprečiti njeno ponovnu realizaciju?

sobes.tech АИ

Одговор од АИ

Da biste osigurali da se operacija izvrši samo jednom i da izbegnete njeno ponovljeno izvršenje, možete koristiti nekoliko pristupa:

  1. Sinhronizacija niti:

    • Koristite ključnu reč synchronized ili blokade (Lock) da sprečite istovremeni početak operacije.
  2. Zastavica stanja:

    • Uvedite boolean zastavicu koja se postavlja pri prvom pokretanju operacije i proverava pre izvršenja.
  3. Korišćenje AtomicBoolean ili promenljivih volatile:

    • Za thread-safe kontrolu stanja operacije.
  4. Idiomatika "singleton" ili lenja inicijalizacija:

    • Na primer, koristeći 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)) {
            // Kod operacije koja treba da se izvrši samo jednom
            System.out.println("Operacija izvršena");
        } else {
            System.out.println("Operacija je već ranije izvršena");
        }
    }
}

Na ovaj način, operacija će biti izvršena samo jednom, čak i ako je više niti pokuša da je pokrene istovremeno.