Встречается на собеседованиях • сегодня
Что такое happens-before в Java
Happens-before — это отношение в Java Memory Model, гарантирующее, что операции, выполняемые одним потоком, будут видны другому потоку в определенном порядке. Если операция A happens-before операция B, то результат A гарантированно виден при выполнении B.
Основные правила happens-before:
- Монитор: освобождение монитора happens-before последующее захватывание того же монитора.
- Volatile: запись в volatile-поле happens-before чтение того же поля.
- Thread.start(): вызов start() happens-before любые действия в новом потоке.
- 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");
}
}
}
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы