Встречается на собеседованиях • сегодня
Как обеспечить выполнение принципа happens-before
Принцип happens-before в Java гарантирует, что изменения в одном потоке будут видны другому потоку при определенных условиях. Основные способы:
- Синхронизация - доступ к общим данным через synchronized блоки или методы:
java
synchronized(lock) {
// операции с общими данными
}- Volatile переменные - чтение volatile поля гарантирует видимость всех записей до него:
java
volatile boolean flag = false;-
Финальные поля - корректная инициализация через конструктор.
-
Методы из пакета java.util.concurrent:
- Atomic классы (AtomicInteger и др.)
- CountDownLatch, CyclicBarrier
- ExecutorService (submit()/get())
- Concurrent коллекции
- Thread.start() и Thread.join() - запуск и ожидание завершения потока.
Пример с volatile:
java
class Example {
volatile boolean ready = false;
void writer() {
ready = true; // запись happens-before чтение
}
void reader() {
if (ready) { // гарантированно увидит true
// выполнить действие
}
}
}
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы