Enjoy A New Student Discount All 55,000 Courses on sale for Only $12.99

Ends in 05h 23m 49s

Java para programadores (6.5): Multitarea. Monitores

Todos los objetos disponen de un monitor interno, que solo permite el acceso de un hilo a la vez

Que son los monitores

  • Estructura de alto nivel para la gestión de concurrencia
  • El monitor sólo permite el acceso a un hilo a la vez
  • Contiene una lista priorizada de hilos en espera para entrar
  • Gestiona dicho acceso

Porque los necesitamos

La sincronización solo nos garantiza que a un recurso no se puede acceder a la vez desde más de un sitio, pero no nos garantiza que el hilo que tenía que acceder lo haya hecho.

Si nos imaginamos un hilo que va dejando información en una variable, y otro hilo que la va recogiendo, necesitamos controlar que los dos hilos no accedan a la vez, que eso nos lo hace el synchronized, pero también necesitamos estar seguro que el hilo que deja la información, lo haya hecho, antes de poder recogerla

Para ello, deberíamos comprobar si tenemos la información, y si no, esperar, y así, hasta que aparezca

Los monitores nos permiten quedarnos esperando que el otro programa deje la información, y luego, que nos avise para poderla recoger

Como funcionan

Los hilos llevan su propio control de avance y parada, para ello, disponen de los métodos:

  • wait() Detiene la ejecución del hilo hasta recibir una notificación
  • notify() Despierta a uno de los hilos detenidos (A cualquiera de ellos)
  • notifyAll() Despierta a todos los hilos detenidos
    • Todos pasan a estar “en espera” hasta que el planificador les ceda el turno, claro

Para invocar el método wait es necesario tener el control del monitor… por tanto, siempre debe activarse dentro de un método sincronizado

Cada hilo ha de esperar el evento, por lo que la llamada a wait, es conveniente hacerla dentro de un while

En el otro hilo, cuando deseemos liberar a los hilos que están esperando, podemos hacer

Deja un comentario

/*Si te ha gustado el artículo
no dudes en compartirlo*/

Facebook
Twitter
LinkedIn

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies

Ver mi IP

Ver ip de mi máquina
tipo valor
Ip: 18.208.132.74
Proxy:
Remote host: ec2-18-208-132-74.compute-1.amazonaws.com
Remote port: 36754
** 18.208.132.74