Может ли какой-нибудь подкласс из потока вызвать функцию signal() условия, если какой-либо другой поток не вызывает await()?

#java #multithreading #conditional-statements #reentrantlock

#java #многопоточность #условные операторы #блокировка повторного входа

Вопрос:

Например, два потока (информер и наблюдатель) используют один и тот же список. Информер добавляет данные в список, а наблюдатель не может прочитать коллекцию, если коллекция пуста или Информер обращается к списку. Что произойдет, если информер вызовет функцию Condition.signal(), но наблюдатель не создан или не запущен (наблюдатель не вызывает условие.await() ) ?

Ответ №1:

Да, это возможно вызвать signal , даже если ожидающий поток отсутствует. Ожидающий поток пропустит этот сигнал, и он будет заблокирован при выполнении вызова await() .