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.

código sincronizado. Un hilo que quiere ejecutar un código sincronizado <strong>de</strong> unobjeto <strong>de</strong>be primero tratar <strong>de</strong> adquirir la llave <strong>de</strong>l objeto. Si la llave estádisponible—lo que significa, si este no está ya controlado por otro hilo —entonces todo esta bien. Si la llave esta bajo el control <strong>de</strong> otro hilo, entoncesel hilo trata <strong>de</strong> ir a buscar en el estado llave y solo estará listo cuando lallave este disponible. Cuando un hilo que posee una llave pasa fuera <strong>de</strong>lcódigo sincronizado, el hilo automáticamente abandona la llave . Todo estochequeo <strong>de</strong> llaves y cambios <strong>de</strong> estados es hecho <strong>de</strong>trás <strong>de</strong> la escena; Laúnica programación explícita que usted necesita es <strong>de</strong>clarar el códigosincronizado(synchronized).La figura <strong>7.</strong>6 muestra el estado <strong>de</strong> búsqueda <strong>de</strong> llaves. Esta figura es elprimer estado en nuestra expansión <strong>de</strong> <strong>los</strong> estados monitores, como se<strong>de</strong>scribe en la Figura <strong>7.</strong>5.Hay dos formas para marcar un código como sincronizado:• Sincronizar un método entero colocando el modificador synchronized en la<strong>de</strong>claración <strong>de</strong>l método. Para ejecutar el método, un hilo <strong>de</strong>be adquirir lallave <strong>de</strong>l objeto que posee el método.• Sincronizar un grupo <strong>de</strong> métodos encerrando las líneas <strong>de</strong>seadas <strong>de</strong>lcódigo con paréntesis ({})e insertando la expresiónsynchronized(someOb)fCt) antes <strong>de</strong> abrir el paréntesis.Esta técnica le permite sincronizar el bloque sobre la llave <strong>de</strong> cualquierobjeto, no necesariamente el objeto que posee el código.La primera técnica esta muy lejos <strong>de</strong> ser común; la sincronización sobreotros objetos a <strong>los</strong> que poseen el código synchronized pue<strong>de</strong> ser explícita.peligrosaFIGURA <strong>7.</strong>6Los estados <strong>de</strong> búsqueda <strong>de</strong> llaves

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

Saved successfully!

Ooh no, something went wrong!