#java #multithreading #conditional-statements #reentrantlock
#java #многопоточность #условные операторы #блокировка повторного входа
Вопрос:
Например, два потока (информер и наблюдатель) используют один и тот же список. Информер добавляет данные в список, а наблюдатель не может прочитать коллекцию, если коллекция пуста или Информер обращается к списку. Что произойдет, если информер вызовет функцию Condition.signal(), но наблюдатель не создан или не запущен (наблюдатель не вызывает условие.await() ) ?
Ответ №1:
Да, это возможно вызвать signal
, даже если ожидающий поток отсутствует. Ожидающий поток пропустит этот сигнал, и он будет заблокирован при выполнении вызова await()
.