2010-07-18 13 views

risposta

5

No, il thread sarà ancora nello stato RUNNABLE. Notare che RUNNABLE significa che un thread è disponibile per essere eseguito e potrebbe essere attualmente in esecuzione o in attesa del proprio turno. Thread.STATE non fa distinzione tra un thread attualmente in esecuzione e un thread che è pronto per essere eseguito, entrambi sono RUNNABLE.

Un thread solo entrare nello stato WAITING quando uno wait(), join() o LockSupport.park() è stato chiamato.

Chiamando il metodo Thread.yield(), il thread attualmente in esecuzione sta rinunciando volontariamente alla propria porzione di tempo CPU. Questo thread passa quindi dal running back allo stato ready.

+0

@krock: quindi è Runnable anche se dà al thread-scheduler un'opportunità per attivare un thread diverso? – Max

+0

@Max, yes 'yield()' è una notifica al sistema che dovrebbe dare agli altri thread la possibilità di essere eseguito. Se non c'è nient'altro da fare, il thread potrebbe semplicemente continuare l'esecuzione. – krock

+0

RUNNABLE, non in esecuzione. Potrebbe essere eseguito se la pianificazione gli dà una fetta. Al contrario un thread calling join() non può essere eseguito (cioè non è eseguibile) in questo momento. – EricSchaefer

Problemi correlati