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

Как устроена Java Memory Model

Java Memory Model (JMM) определяет правила видимости изменений переменных между потоками и порядок выполнения операций. Основные концепции:

  1. Happens-before - гарантирует, что операции в одном потоке видны другому, если между ними есть отношение happens-before (например, синхронизация, volatile, запуск/завершение потока).
  1. Видимость изменений - без синхронизации изменения в одном потоке могут быть не видны другим.

  2. Переупорядочивание - JVM может переставлять инструкции для оптимизации, если это не нарушает семантику однопоточного выполнения.

Пример с volatile:

java
class Shared {
    volatile boolean flag = false;
    
    void writer() {
        flag = true; // запись happens-before чтение этого значения
    }
    
    void reader() {
        if (flag) { // гарантированно увидит true, если writer() был выполнен
            // действие
        }
    }
}

Ключевые механизмы синхронизации: synchronized, volatile, final, атомарные классы из java.util.concurrent.atomic.

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

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

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

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