Junior — Middle
Ինչպե՞ս ապահովել, որ գործողությունը կատարվի միայն մեկ անգամ և կանխել նրա կրկնությունը։
sobes.tech AI
Պատասխան AI-ից
Որպեսզի ապահովվի, որ գործողությունը կատարվում է միայն մեկ անգամ և կանխվի նրա կրկնությունը, կարող եք օգտագործել մի քանի մոտեցումներ՝
-
Ցանցային թելերի սինխրոնիզացիա:
- Օգտագործել
synchronizedբանալի բառը կամLockփակագծերը՝ կանխելու համար գործողության միաժամանակյա մեկնարկը:
- Օգտագործել
-
Կարգավիճակի նշան:
- Ներառել բուլյան նշան, որը սահմանվում է առաջին անգամ գործողությունը սկսելու ժամանակ և ստուգվում է նախքան գործարկելը:
-
Օգտագործել
AtomicBooleanկամvolatileփոփոխականներ:- Թելային անվտանգ վերահսկողության համար գործողության վիճակի:
-
"Singleton" կամ դանդաղ ինիցիալիզացիայի իդեոմա:
- Օրինակ, օգտագործելով
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)) {
// Կոդը, որը պետք է կատարվի միայն մեկ անգամ
System.out.println("Գործողությունը կատարվեց");
} else {
System.out.println("Գործողությունը արդեն կատարվել է նախապես");
}
}
}
Այսպիսով, գործողությունը կկատարվի միայն մեկ անգամ, նույնիսկ եթե մի քանի թելեր փորձեն միաժամանակ սկսել այն։