Когда несколько потоков ждут на мониторе объекта и вызывается notify(), JVM пробуждает один поток из множества ожидающих.
Выбор JVM относительно какого потока пробудить произвольный и зависит от реализации. Согласно спецификации Java, нет гарантированного правила, определяющего, какой именно поток будет выбран.
Когда нужна координация потоков, подумай об использовании:
notifyAll() для пробуждения всех ожидающих потоков вместо одногоCountDownLatch, CyclicBarrier или объектов Condition — для более предсказуемого поведенияПоскольку ты не можешь контролировать, какой поток проснётся, твой код должен быть спроектирован так, чтобы корректно работать при пробуждении любого ожидающего потока. Избегай предположений о порядке выполнения потоков при использовании notify().
JVM всегда выбирает поток с наивысшим приоритетом, когда вызывается notify() на объекте с несколькими ожидающими потоками.
Новый — ещё не проверен сообществом
Вы