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

Из каких частей состоит JMM

JMM (Java Memory Model) определяет правила взаимодействия потоков с памятью и состоит из следующих ключевых аспектов:

  1. Happens-before – гарантирует порядок выполнения операций между потоками. Если A happens-before B, то изменения A видны в B.
  2. Visibility – изменения переменной, сделанные одним потоком, становятся видимыми другим.
  3. Atomicity – операции с примитивами (кроме long/double) и volatile-переменными атомарны.
  4. Reordering – компилятор/процессор может переупорядочивать операции, если это не нарушает happens-before.
  5. Synchronization – механизмы (synchronized, volatile, final, атомики) обеспечивают корректную работу с памятью.

Пример:

java
class Example {
    volatile boolean flag = false;
    void writer() {
        flag = true; // Запись в volatile
    }
    void reader() {
        if (flag) { // Чтение volatile
            System.out.println("Flag is true");
        }
    }
}

Здесь volatile гарантирует видимость изменения flag между потоками.

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

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

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

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