Встречается на собеседованиях • сегодня
Какой будет результат при инкременте 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Для корректной работы нужно использовать:
AtomicIntegersynchronizedблокиvolatile+ атомарные операции (но для инкремента недостаточно)

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