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