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.

wait() y notify()Los métodos wait() y notify() suministran una forma para que un objetocompartido coloque en pausa un hilo cuando este no disponible para aquelhilo, y le permita al hilo continuar cuando sea apropiado. Los hi<strong>los</strong> en simismos no tiene nunca que chequear el estado <strong>de</strong> <strong>los</strong> objetos compartidos.Un objeto que controla sus hi<strong>los</strong> clientes <strong>de</strong> esta manera es conocido comoun monitor. En la estricta terminología <strong>de</strong> Java, un monitor es cualquierobjeto que tiene algún código sincronizado. Para ser realmente útil, muchosmonitores hacen uso <strong>de</strong> <strong>los</strong> métodos wait() y notify(). De esta manera laclase Mailbox es un monitor.La Figura <strong>7.</strong>7 muestra <strong>los</strong> estados <strong>de</strong> transición <strong>de</strong> wait () y notifyO.Ambos wait() y notify() tiene que ser llamados en un código sincronizado. Un hilo que llama a wait() suelta la CPU virtual; al mismo tiempo estesuelta la llave. <strong>Este</strong> entra a un grupo <strong>de</strong> hi<strong>los</strong> en espera, el cual esadministrado por el objeto cuyo método wait() fue llamado. Cada objetotiene tal grupo. El código siguiente muestra como el métodoretrieveMessageO <strong>de</strong> la clase Mailbox podría ser modificado para comenzar atener ventaja <strong>de</strong> la llamada a wait().FIGURA <strong>7.</strong>7Estados Monitor1. public synchronized String retrieveMessage() {2. while (request == false) {3. try{4. wait();5. catch (InterruptedException e) { }6.}

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

Saved successfully!

Ooh no, something went wrong!