10.07.2015 Views

7. Hilos Objetivos Este capítulo cubre los siguientes aspectos, de los ...

7. Hilos Objetivos Este capítulo cubre los siguientes aspectos, de los ...

7. Hilos Objetivos Este capítulo cubre los siguientes aspectos, de los ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

corrientemente para cesar su ejecución por (aproximadamente) unacantidad especifica <strong>de</strong> tiempo. Hay dos formas <strong>de</strong> llamar este método ,<strong>de</strong>pendiendo si se quiere especificar el periodo para dormir con una precisiónen milisegundos o nanosegundos:• public static void sleep(long milliseconds) throws InterruptedException• public static void sleep(long milliseconds, int nanoseconds) throwsInterruptedExceptionNote que sleep(), como yield(), es estático. ambos métodos operan sobre elhilo que se esta ejecutando corrientemente.El diagrama <strong>de</strong> estados para dormido(sleeping) es mostrado en la Figura<strong>7.</strong>3. Note que cuando el hilo ha finalizado el estado sleeping, este nocontinua la ejecución. Como podría esperarse, este entra al estado listo ysolamente se ejecutará cuando el programador <strong>de</strong> hi<strong>los</strong> se lo permita. Poresta razón, podría esperarse que una llamada a sleep() bloqueará un hilo almenos por el tiempo requerido, pero este podría bloquearse por mucho mastiempo. Esto sugiere piense con cuidado lo que haría en dado momento sudiseño antes <strong>de</strong> esperar cualquier resultado <strong>de</strong> la precisión <strong>de</strong> la versiónnanosegundos <strong>de</strong>l método sleep().La clase Thread tiene un método llamado interrupt(). Un hilodormido(sleeping) que recive una llamada interrupt() cambiainmediatamente al estado listo(Ready); cuando este logra correr, ejecutarasu manejador InterruptedException.FIGURE <strong>7.</strong>3El estado Dormido (Sleeping)Bloqueado(Blocking)Muchos métodos que ejecutan entrada o salida <strong>de</strong>ben esperar por algunaocurrencia en el mundo exterior antes que el<strong>los</strong> puedan proce<strong>de</strong>r; estecomportamiento es conocido como bloqueado(blocking). Un buen ejemplo esla lectura <strong>de</strong> un socket:

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

Saved successfully!

Ooh no, something went wrong!