Встречается на собеседованиях • сегодня
Как управлять Happens-before
Happens-before — это отношение гарантирующее, что одна операция видит результат другой. В Java управлять им можно через:
- Синхронизацию - операции в synchronized блоке видят изменения из предыдущих synchronized блоков с тем же монитором:
java
synchronized(lock) {
x = 1; // Запись
}
synchronized(lock) {
System.out.println(x); // Гарантированно увидит 1
}- volatile переменные - запись в volatile поле happens-before последующее чтение того же поля:
java
volatile boolean flag = false;
// Поток 1
flag = true;
// Поток 2
if (flag) { // Гарантированно увидит true, если запись уже произошла
// действие
}-
Thread.start() и Thread.join() - вызов start() happens-before действия в потоке, а действия в потоке happens-before завершение join().
-
Классы из java.util.concurrent - например, CountDownLatch, CyclicBarrier, Future.
Важно: happens-before не означает физический порядок выполнения, только гарантию видимости изменений.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы