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

Как гарантировать возврат 2000 при наличии двух потоков, увеличивающих volatile переменную равную 0

Для гарантированного возврата 2000 при инкременте volatile переменной двумя потоками нужно использовать атомарные операции или синхронизацию. Volatile гарантирует видимость изменений, но не атомарность составных операций (чтение-изменение-запись).

Пример с AtomicInteger:

java
AtomicInteger counter = new AtomicInteger(0);

// В потоках:
counter.incrementAndGet();

Или с synchronized:

java
private volatile int counter = 0;
private final Object lock = new Object();

// В потоках:
synchronized(lock) {
    counter++;
}

Без синхронизации возможна потеря обновлений из-за race condition, когда оба потока одновременно читают одно значение, инкрементируют и записывают.

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

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

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

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