El monitor significa que el hilo está esperando para obtener un bloqueo en un objeto. Por ejemplo, cuando un hilo ejecuta un método sincronizado y otro trata de invocarlo en el mismo objeto, no podrá hacerlo hasta que finalice la primera invocación del método. Esto se debe a que el primer hilo tiene un monitor o bloqueo en ese objeto, por lo que el segundo debe esperar hasta que se libere.
De Oracle Threading Tutorials:
". La sincronización se desarrolla alrededor de una entidad interna conoce como el bloqueo intrínseco o monitor de bloqueo (La especificación API a menudo se refiere a esta entidad simplemente como un 'Monitor'.) Cerraduras intrínsecas juegan un rol en ambos aspectos de la sincronización: imponer el acceso exclusivo al estado de un objeto y establecer las relaciones de suceso-antes que son esenciales para la visibilidad ".
Puede ser útil que cualquier persona nueva en el tema (como el OP) sepa que "monitor" se usa como sinónimo de "bloqueo" aquí y en la documentación. –
¿Hay alguna forma de saber qué objeto sincronizado (o línea de código) es el que causa que el hilo se BLOQUEE/Monitorice? – user123321
@ user123321 Puede hacer un volcado de hilo. (Botón en la esquina superior derecha de la pestaña "subprocesos"). Allí puede ver con qué intenta sincronizar el subproceso y qué subproceso mantiene el bloqueo. – Fildor