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

Какие знаешь события, связанные отношением Happens Before

Happens Before — это отношение, гарантирующее, что одно событие видимо для другого и выполняется до него. В Java оно обеспечивается следующими механизмами:

  1. Синхронизация (мониторы, synchronized):
    java
    synchronized (lock) { // Запись
        x = 1;
    }
    synchronized (lock) { // Чтение
        System.out.println(x); // Гарантированно увидит 1
    }
  1. volatile переменные:
    Запись в volatile поле happens before чтение того же поля.

  2. Запуск и завершение потоков:

    • Thread.start() happens before действия в новом потоке.
    • Действия в потоке happens before Thread.join().
  3. Класс java.util.concurrent:

    • CountDownLatch, CyclicBarrier, Future.
    • Запись в ConcurrentHashMap happens before последующее чтение.
  4. Инициализация (final поля):
    Корректная публикация объекта через final поля гарантирует видимость его состояния.

Пример с volatile:

java
volatile boolean flag = false;
// Поток 1
flag = true; // happens before
// Поток 2
if (flag) { // Увидит true, если запись уже произошла
    System.out.println("Done");
}
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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