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:
-
Sinhronizacija niti:
- Koristite ključnu reč
synchronizedili blokade (Lock) da sprečite istovremeni početak operacije.
- Koristite ključnu reč
-
Zastavica stanja:
- Uvedite boolean zastavicu koja se postavlja pri prvom pokretanju operacije i proverava pre izvršenja.
-
Korišćenje
AtomicBooleanili promenljivihvolatile:- Za thread-safe kontrolu stanja operacije.
-
Idiomatika "singleton" ili lenja inicijalizacija:
- Na primer, koristeći
java.util.concurrent.atomic.AtomicBoolean:
- Na primer, koristeći
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.