Cuando la máquina virtual encuentra una declaración sleep(long)
, interrumpirá el hilo que se está ejecutando en ese momento. "The Thread actual" en ese momento es siempre el hilo que llamó al Thread.sleep()
. Entonces dice:
¡Hey! Nada que hacer en este hilo (Porque tengo que esperar). Voy a continuar otro hilo.
Cambiar el hilo se denomina "ceder". (Nota: puede ceder usted mismo llamando al Thread.yield();
)
Por lo tanto, no tiene que averiguar cuál es el hilo actual. Siempre es el subproceso que llamó a sueño(). Nota: Puede obtener el hilo actual llamando Thread.currentThread();
Un breve ejemplo:
// here it is 0 millis
blahblah(); // do some stuff
// here it is 2 millis
new Thread(new MyRunnable()).start(); // We start an other thread
// here it is 2 millis
Thread.sleep(1000);
// here it is 1002 millis
MyRunnable
su run()
método: implementació
// here it is 2 millis; because we got started at 2 millis
blahblah2(); // Do some other stuff
// here it is 25 millis;
Thread.sleep(300); // after calling this line the two threads are sleeping...
// here it is 325 millis;
... // some stuff
// here it is 328 millis;
return; // we are done;
+1: No pude encontrar las palabras correctas. –