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 ...
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.}