В кооперативных (не вытесняющих) моделях, как только поток получает управление, он продолжает работать, пока он явно не выдаст управление или не заблокирует его.
В модели с вытеснением виртуальной машине разрешено входить и передавать управление из одного потока в другой в любое время.Обе модели имеют свои преимущества и недостатки.
Потоки Java обычно имеют приоритет между приоритетами.Поток с более высоким приоритетом имеет приоритет над потоком с более низким приоритетом.Если поток с более высоким приоритетом переходит в спящий режим или блокируется, то поток с более низким приоритетом может работать (при условии, что поток доступен и готов к работе).
Однако, как только поток с более высоким приоритетом просыпается или разблокируется, он прерывает поток с более низким приоритетом и работает до тех пор, пока не завершится, не заблокируется снова или не будет вытеснен потоком с еще более высоким приоритетом.
Спецификация языка Java иногда позволяет виртуальным машинам запускать потоки с более низким приоритетом вместо запускаемого потока с более высоким приоритетом, но на практике это необычно.
Однако в спецификации языка Java ничего не указано, что должнопроизойдет с равным приоритетом потоков.В некоторых системах эти потоки будут разделены по времени, и среда выполнения выделит потоку определенное количество времени.Когда это время истекло, среда выполнения вытесняет работающий поток и переключается на следующий поток с тем же приоритетом.
В других системах работающий поток не будет вытесняться в пользу потока с таким же приоритетом.Он будет продолжать работать до тех пор, пока не заблокирует, явно не передаст управление или не будет вытеснен потоком с более высоким приоритетом.
Что касается преимуществ, то и Дероберт, и Бедность достаточно четко их выделили.