¿A qué se refiere un monitor en la programación concurrente en Java?
Cuando leo que "cada objeto ha asociado un monitor", ¿qué significa?
¿Es un objeto especial?
java
multithreading
concurrency
monitor
xdevel2000
fuente
fuente
Respuestas:
Un monitor es un mecanismo para controlar el acceso concurrente a un objeto.
Esto te permite hacer:
Hilo 1:
Hilo 2:
Esto evita que los subprocesos 1 y 2 accedan a la sección supervisada (sincronizada) al mismo tiempo. Uno comenzará y el monitor evitará que el otro acceda a la región antes de que finalice el primero.
No es un objeto especial. Mecanismo de sincronización es colocado en la clase de raíz de jerarquía:
java.lang.Object
.También hay
wait
ynotify
métodos que también usarán el monitor de objetos para la comunicación entre diferentes hilos.fuente
Class
objeto correspondiente para los métodos estáticos. Si ya tiene un método1 sincronizado () y declara sincronizado el método2 (), no se crean nuevos monitores y, de hecho, invocar cualquiera de los métodos (en el mismo objeto) intentará bloquear el mismo monitor. Esto a menudo atrapa a los recién llegados.Un monitor es una entidad que posee un conjunto de bloqueo y de espera . En Java, cualquiera
Object
puede servir como monitor.Para obtener una explicación detallada de cómo funcionan los monitores en Java, recomiendo leer la sección Mecánica del monitor de Programación concurrente en Java (el enlace anterior muestra la vista previa en los libros de Google, y esa sección está disponible para leer).
fuente
Wakes up all threads that are waiting on this object's monitor.
acerca de notifyall (), lo que obtengo es que el objeto está manteniendo (con la ayuda de una entidad / objeto interno) lo que todos los subprocesos están esperando para bloquear, esa entidad / objeto interno se llama monitor.fuente
El lenguaje Java y el sistema de tiempo de ejecución admiten la sincronización de subprocesos mediante el uso de monitores.
Un monitor está asociado con un elemento de datos específico (una variable de condición) y funciona como un bloqueo en esos datos. Cuando un subproceso mantiene el monitor para algún elemento de datos, otros subprocesos se bloquean y no pueden inspeccionar ni modificar los datos.
fuente
http://java.sun.com/docs/books/jvms/second_edition/html/Concepts.doc.html#33308
Un mecanismo para controlar el acceso a los objetos de uno en uno.
fuente
Monitor es una construcción de sincronización que permite que los subprocesos tengan exclusión mutua y la capacidad de esperar (bloquear) para que una determinada condición se haga realidad.
Los monitores también tienen un mecanismo para indicar a otros hilos que su condición se ha cumplido. Es una entidad que posee un conjunto de bloqueo y de espera. En Java, cualquier objeto puede servir como monitor.
En la máquina virtual Java, cada objeto y clase se asocia lógicamente con un monitor. Para implementar la capacidad de exclusión mutua de los monitores, se asocia un bloqueo (a veces llamado mutex) con cada objeto y clase. Esto se llama semáforo en términos de sistemas operativos, mutex es un semáforo binario.
Para más información consultar el enlace
fuente
http://journals.ecs.soton.ac.uk/java/tutorial/java/threads/monitors.html
El monitor está asociado con un objeto o miembro de datos, que se adquiere cuando se ingresa un miembro de datos u objeto es un bloque de sincronización (sección crítica) y se libera cuando se sale.
fuente