Встречается на собеседованиях • сегодня
Как гарантировать возврат 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, когда оба потока одновременно читают одно значение, инкрементируют и записывают.

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