Встречается на 8% собеседований по Java
Что такое модель памяти в Java
Модель памяти Java (JMM) определяет правила взаимодействия потоков с общей памятью, гарантируя предсказуемое поведение многопоточных программ. Основные аспекты:
- Happens-before - отношение, гарантирующее видимость изменений между потоками
- Работа с volatile - чтение/запись volatile переменной создает happens-before
- Синхронизация - операции с synchronized, Lock, atomic создают happens-before
Пример проблемы видимости:
java
class Example {
int x = 0;
boolean ready = false;
void writer() {
x = 42;
ready = true; // без синхронизации другой поток может не увидеть эти изменения
}
void reader() {
if (ready) {
System.out.println(x); // может вывести 0
}
}
}JMM позволяет компилятору и процессору переупорядочивать операции для оптимизации, но гарантирует корректность при правильной синхронизации.
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы