Как описано в документации вы связаны между собой, Condition
может разбудить одинарные темы, вместо того, чтобы разбудить все ожидания те (signal
против signalAll
).
ConditionVariable
это состояние на основе и, таким образом, позволяет сохранять состояние открытых (в отличие от освобождения всех потоков, ожидающих в одно время, можно не блокировать темы, вообще используя open
и close
).
Таким образом, вы должны использовать Condition
если
- вы должны быть совместимы с регулярной Java (например, в библиотеке, используемой для ПК/сервера/все приложения, тоже), так как
ConditionVariable
не доступный там.
- вам нужно будить одиночные тема
- (мое личное мнение) вы не нуждающийся в открытой фазе
ConditionVariable
, как единственный вызов signalAll
приятнее читать, чем open
непосредственно с последующим close
.
в то время как вы должны использовать ConditionVariable
если
- у вас есть фазы в вашем приложении, где вам не нужны какие-либо блокировки на всех