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

По какому принципу потоки считывают переменную в общей памяти

В Java потоки считывают переменные из общей памяти согласно модели памяти Java (JMM). Основные принципы:

  1. Happens-Before - гарантирует видимость изменений между потоками при определенных условиях (synchronized, volatile, final)
  1. Visibility - без синхронизации нет гарантии, что изменения одной переменной в одном потоке будут видны в другом

Пример проблемы:

java
class Shared {
    int x = 0; // без volatile/synchronized
}

// Поток 1:
shared.x = 1;

// Поток 2:
System.out.println(shared.x); // может вывести 0 или 1

Решение:

java
class Shared {
    volatile int x = 0; // или используем synchronized
}

Для атомарных операций лучше использовать AtomicInteger и другие классы из java.util.concurrent.atomic.

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

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

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

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