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

Какой будет результат при инкременте int переменной несколькими потоками

При инкременте int переменной несколькими потоками без синхронизации возможны race condition. Результат будет непредсказуемым, так как операция i++ не атомарна (читает, увеличивает, записывает).

Пример:

java
int counter = 0;

Runnable task = () -> {
    for (int i = 0; i < 1000; i++) {
        counter++; // небезопасно!
    }
};

Thread t1 = new Thread(task);
Thread t2 = new Thread(task);
t1.start();
t2.start();
t1.join();
t2.join();

System.out.println(counter); // может быть меньше 2000

Для корректной работы нужно использовать:

  1. AtomicInteger
  2. synchronized блоки
  3. volatile + атомарные операции (но для инкремента недостаточно)
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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