#477 Код-ревью ожидания условия через Lock и Condition
Провести ревью - всё ли здесь хорошо?
class Scratch {
private static final Logger log = getLogger(Scratch.class);
private static volatile boolean ready = false;
private static final Lock rLock = new ReentrantLock();
private static final Condition readyCondition = rLock.newCondition();
private static void waitAndLog() {
try {
rLock.lock();
log.info("rLock acquired, ready: {}", ready);
if (!ready)
readyCondition.await();
log.info("ready was awaited: {}", ready);
}
catch (InterruptedException e) {
throw new RuntimeException(e);
}
finally {
rLock.unlock();
}
}
public static void main(String[] args) {
new Thread(Scratch::waitAndLog).start();
try {
rLock.lock();
ready = true;
log.info("signal about ready");
readyCondition.signal();
}
finally {
rLock.unlock();
}
}
}
Разбор вопроса
Войди, чтобы начать диалог
Ментор ведёт диалог по текущему вопросу и учитывает предыдущие сообщения.
Войти
Доступно с Premium
Это лишь одно из решений, доступных с Premium. А ещё:
- 250+ продвинутых лекций
- 1300+ практических заданий
- 500+ решений задач с реальных собеседований
- Именные сертификаты Java Hub
- Расширенный доступ к AI-ментору