Junior — Middle
116
Θα επιστραφεί η τιμή 2000 αν δύο παράλληλα νήματα αυξήσουν ταυτόχρονα μια volatile μεταβλητή αρχικά ίση με το μηδέν;
Εταιρείες όπου ρωτήθηκαν
Драйв Клик
Απάντηση από AI
sobes.tech AI
Нет, значение 2000 не гарантировано при одновременном увеличении volatile переменной двумя потоками. Ключевое слово volatile обеспечивает видимость изменений переменной между потоками, но не атомарность операций. Инкремент (++) — это составная операция (чтение, увеличение, запись), которая не является атомарной. Для корректного увеличения в многопоточном окружении нужно использовать атомарные классы, например, AtomicInteger:
import java.util.concurrent.atomic.AtomicInteger;
AtomicInteger counter = new AtomicInteger(0);
// В потоках
counter.incrementAndGet();
Таким образом, без атомарных операций результат может быть меньше ожидаемого.