Назад к вопросам
Junior — Middle
99
Каким образом можно обеспечить выполнение операции единожды и исключить её повторное выполнение?
Ответ от нейросети
sobes.tech 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("Операция уже была выполнена ранее");
}
}
}
Таким образом, операция выполнится только один раз, даже если несколько потоков попытаются её запустить одновременно.