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

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

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

monitores y como usar<strong>los</strong> eficientemente.La razón <strong>de</strong> tener monitores es que algunas veces un hilo no pue<strong>de</strong> ejecutarsu tarea hasta que un objeto alcance un <strong>de</strong>terminado estado. Por ejemplo,consi<strong>de</strong>re una clase que maneja peticiones para escribir por una salidaestandar:1. class Mailbox {2. public boolean request;3. public String message;4. }La intención <strong>de</strong> esta clase es que un cliente pueda colocar algún mensaje <strong>de</strong>algún valor, luego colocar la solicitud a verda<strong>de</strong>ro:1. myMailbox.message = "Hello everybody.";2. myMailbox.request = true;Aquí podría haber un hilo que chequee la solicitud; al encontrar este enverda<strong>de</strong>ro, el hilo podría escribir un mensaje para el sistema, fuera y luegocolocar la solicitud a falso. (Colocando la solicitud a falso indica que el objetomailbox esta listo para manejar otra solicitud) es atractivo para implementarel hilo como esto:1. public class Consumer extends Thread {2. private Mailbox myMailbox;3.4. public Consumer(Mailbox box) {5. this.myMailbox = box;6. }<strong>7.</strong>8. public void run() {9. while (true) {10. if (myMailbox.request) {11. System.out.pri ntln(myMai1 box.message);12. myMailbox.request = false;13. }14.15. try {16. sleep(50);1<strong>7.</strong> }18. catch (InterruptedException e) { }19. }20.}El hilo consumidor entra en un ciclo infinito, chequeando las peticiones cada50 milisegundos. Si hay una solicitud (línea 10), el consumidor escribe elmensaje a la salida estandar (línea 11) y luego coloca las solicitu<strong>de</strong>s a falso

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

Saved successfully!

Ooh no, something went wrong!