2010-07-18 9 views

Respuesta

5

No, el subproceso seguirá estando en el estado RUNNABLE. Tenga en cuenta que RUNNABLE significa que un subproceso está disponible para ejecutarse y puede estar ejecutándose o esperando su turno. Thread.STATE no distingue entre un hilo que se está ejecutando actualmente y un hilo que está listo para ejecutarse, ambos son RUNNABLE.

Un hilo solamente entrará en el estado WAITING cuando cualquiera wait(), join() o LockSupport.park() ha sido llamado.

Al llamar al método Thread.yield(), el hilo actualmente en ejecución está renunciando voluntariamente a su porción de tiempo de CPU. Este hilo pasa de volver corriendo a un estado listo.

+0

@krock: ¿así que es Runnable aunque le da al programador de hilos la oportunidad de activar un hilo diferente? – Max

+0

@Max, sí 'yield()' es una notificación al sistema que debe dar oportunidad a otros subprocesos para ejecutarse. Si no hay nada más que hacer, el hilo simplemente podría continuar ejecutándose. – krock

+0

RUNNABLE, no EN EJECUCIÓN. Podría ejecutarse si el programa le da una porción. En contraste, un hilo que llame a join() no se puede ejecutar (es decir, no se puede ejecutar) en este momento. – EricSchaefer

Cuestiones relacionadas