Встречается на собеседованиях • сегодня
Как избежать дублирования операций и гарантировать, что операция выполнится только один раз
Используйте паттерн Singleton или Double-Checked Locking для ленивой инициализации. Для однократного выполнения операции в многопоточной среде подойдет AtomicBoolean или synchronized блок.
Пример с AtomicBoolean:
java
private final AtomicBoolean executed = new AtomicBoolean(false);
public void performOnce() {
if (executed.compareAndSet(false, true)) {
// Операция выполнится только один раз
System.out.println("Operation executed");
}
}
text
**Double-Checked Locking для Singleton:**
```java
public class Singleton {
private static volatile Singleton instance;
public static Singleton getInstance() {
if (instance == null) {
synchronized (Singleton.class) {
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
}Для сложных сценариев можно использовать CompletableFuture.runAsync() с проверкой флага завершения.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы