Похоже, что существует несоответствие между SO-консенсусом и почти каждой диаграммой состояний потоков Java в Интернете; в частности, относительно перехода состояния состояния от WAITING
после вызова notify()
или notifyAll()
...
- WAITING никогда не переходит непосредственно в RUNNABLE
- Поток WAITING, пока он не будет уведомлен... Затем он станет BLOCKED...
- Как только этот поток будет уведомлен, он не будет запущен... Это состояние... заблокированное.
Итак, консенсус по SO: поток переходит из WAITING
в BLOCKED
после вызова notify()
или notifyAll()
; диаграмма ниже иллюстрирует этот переход зеленым цветом.
Вопрос
Почему большинство диаграмм состояний в Интернете иллюстрируют переход от WAITING
в RUNNABLE
, а не BLOCKED
? Изображение красного цвета показывает неправильный переход; я что-то упускаю?