11.05.2013 Views

Java Threads (Hilos en Java) - Universidad de Salamanca

Java Threads (Hilos en Java) - Universidad de Salamanca

Java Threads (Hilos en Java) - Universidad de Salamanca

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Java</strong> <strong>Threads</strong> (<strong>Hilos</strong> <strong>en</strong> <strong>Java</strong>)<br />

...}<br />

if( tarea != null )<br />

tarea.run() ;<br />

}<br />

Se <strong>de</strong>duce, por tanto, que la propia clase Thread <strong>de</strong> <strong>Java</strong> también implem<strong>en</strong>ta la interfaz<br />

Runnable. Observamos que <strong>en</strong> el método run <strong>de</strong> Thread se comprueba si la clase con que<br />

se está trabajando <strong>en</strong> ese mom<strong>en</strong>to (tarea), que es la clase que se pret<strong>en</strong><strong>de</strong> ejecutar como hilo,<br />

es o no nula. En caso <strong>de</strong> no ser nula, se invoca al método run propio <strong>de</strong> dicha clase.<br />

4. Estado y Control <strong>de</strong> <strong>Hilos</strong><br />

4.1. Estados <strong>de</strong> un Hilo<br />

El comportami<strong>en</strong>to <strong>de</strong> un hilo <strong>de</strong>p<strong>en</strong><strong>de</strong> <strong>de</strong>l estado <strong>en</strong> que se <strong>en</strong>cu<strong>en</strong>tre, este estado <strong>de</strong>fine su<br />

modo <strong>de</strong> operación actual, por ejemplo, si esta corri<strong>en</strong>do o no. A continuación proporcionamos<br />

la relación <strong>de</strong> estados <strong>en</strong> los que pue<strong>de</strong> estar un hilo <strong>Java</strong>.<br />

• New<br />

• Runnable<br />

• Not running<br />

• Dead<br />

New<br />

Un hilo esta <strong>en</strong> el estado new la primera vez que se crea y hasta que el método start es<br />

llamado. Los hilos <strong>en</strong> estado new ya han sido inicializados y están listos para empezar a trabajar,<br />

pero aún no han sido notificados para que empiec<strong>en</strong> a realizar su trabajo.<br />

Runnable<br />

Cuando se llama al método start <strong>de</strong> un hilo nuevo, el método run es invocado y el hilo <strong>en</strong>tra<br />

<strong>en</strong> el estado runnable. Este estado podría llamarse “running” porque la ejecución <strong>de</strong>l método<br />

run significa que el hilo esta corri<strong>en</strong>do. Sin embargo, <strong>de</strong>bemos t<strong>en</strong>er <strong>en</strong> cu<strong>en</strong>ta la prioridad <strong>de</strong><br />

los hilos. Aunque cada hilo está corri<strong>en</strong>do <strong>de</strong>s<strong>de</strong> el punto <strong>de</strong> vista <strong>de</strong>l usuario, <strong>en</strong> realidad todos<br />

los hilos, excepto el que <strong>en</strong> estos mom<strong>en</strong>tos esta utilizando la CPU, están <strong>en</strong> el estado runnable<br />

(ejecutables, listos para correr) <strong>en</strong> cualquier mom<strong>en</strong>to dado. Uno pue<strong>de</strong> p<strong>en</strong>sar conceptualm<strong>en</strong>te<br />

<strong>en</strong> el estado runnable como si fuera el estado “running”, sólo t<strong>en</strong>emos que recordar que todos<br />

los hilos ti<strong>en</strong><strong>en</strong> que compartir los recursos <strong>de</strong>l sistema.<br />

Not running<br />

El estado not running se aplica a todos los hilos que están parados por alguna razón. Cuando un<br />

hilo está <strong>en</strong> este estado, está listo para ser usado y es capaz <strong>de</strong> volver al estado runnable <strong>en</strong> un<br />

mom<strong>en</strong>to dado. Los hilos pued<strong>en</strong> pasar al estado not running a través <strong>de</strong> varias vías.<br />

6

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!