Ответ: В Java нельзя явно указать, какому потоку передать управление. Thread.sleep() гарантированно приостанавливает текущий поток как минимум на заданное время, но решение о том, какой поток выполнится следующим, остаётся за планировщиком. Thread.yield() вообще ничего не гарантирует — это лишь рекомендация планировщику временно приостановить текущий поток в пользу другого с тем же приоритетом.
Единственный способ заставить поток уступить процессор — это привести его в состояние блокировки: с помощью wait(), join(), LockSupport.park() или блокировок (synchronized, ReentrantLock и др.). Это приостанавливает выполнение до выполнения условий разблокировки, но даже в этом случае нельзя указать, какой именно поток будет следующим — планировщик сам решает порядок.
Ответ: В Java нельзя явно указать, какому потоку передать управление. Thread.sleep() гарантированно приостанавливает текущий поток как минимум на заданное время, но решение о том, какой поток выполнится следующим, остаётся за планировщиком. Thread.yield() вообще ничего не гарантирует — это лишь рекомендация планировщику временно приостановить текущий поток в пользу другого с тем же приоритетом.
Единственный способ заставить поток уступить процессор — это привести его в состояние блокировки: с помощью wait(), join(), LockSupport.park() или блокировок (synchronized, ReentrantLock и др.). Это приостанавливает выполнение до выполнения условий разблокировки, но даже в этом случае нельзя указать, какой именно поток будет следующим — планировщик сам решает порядок.