2010-07-18 2 views

ответ

5

Нет, нить все равно будет находиться в состоянии RUNNABLE. Обратите внимание, что RUNNABLE означает, что поток доступен для запуска и может быть либо запущен в данный момент, либо ждать его очереди. Thread.STATE не проводит различия между потоком, который выполняется в настоящий момент, и потоком, который готов к запуску, они равны RUNNABLE.

Нить будет ввести только WAITING состояние, когда либо wait(), join() или LockSupport.park() был вызван.

Посредством вызова метода Thread.yield() текущий текущий поток добровольно отказывается от своего куска процессорного времени. Затем этот поток переходит из состояния готовности.

+0

@krock: так что это Runnable, хотя он дает планировщику потоков возможность активировать другой поток? – Max

+0

@Max, yes 'yield()' является уведомлением системы о том, что она должна давать другим потокам возможность запускать. Если больше нечего делать, поток может просто продолжить выполнение. – krock

+0

RUNNABLE, а не RUNNING. Он может работать, если расписание дает ему фрагмент. Напротив, нить call join() не может запускаться (т. Е. Не запускается) в это время. – EricSchaefer

Смежные вопросы