Встречается на собеседованиях • сегодня

Как избежать дублирования операций и гарантировать, что операция выполнится только один раз

Используйте паттерн 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() с проверкой флага завершения.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы