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

Что такое happens-before в Java

Happens-before — это отношение в Java Memory Model, гарантирующее, что операции, выполняемые одним потоком, будут видны другому потоку в определенном порядке. Если операция A happens-before операция B, то результат A гарантированно виден при выполнении B.

Основные правила happens-before:

  1. Монитор: освобождение монитора happens-before последующее захватывание того же монитора.
  2. Volatile: запись в volatile-поле happens-before чтение того же поля.
  3. Thread.start(): вызов start() happens-before любые действия в новом потоке.
  4. Thread.join(): завершение потока happens-before возврат из join().

Пример с volatile:

java
class Example {
    volatile boolean flag = false;
    
    void writer() {
        flag = true; // запись happens-before чтение
    }
    
    void reader() {
        if (flag) { // гарантированно увидит true, если writer() был вызван
            System.out.println("Flag is true");
        }
    }
}
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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