Programación en castellano
Inicio > Tutoriales > J2SE > Threads de Control
-Tutoriales

Threads de Control


Los Monitores Java son Re-Entrantes

El sistema de ejecución de Java permite que un thread re-adquiera el monitor que ya posee realmente porque los monitores Java son re-entrantes. Los monitores re-entrantes son importantes porque eliminan la posibilidad de que un sólo thread ponga en punto muerto un monitor que ya posee.

Consideremos esta clase.

class Reentrant {
    public synchronized void a() {
        b();
        System.out.println("Estoy aquí, en a()");
    }
    public synchronized void b() {
        System.out.println("Estoy aquí, en b()");
    }
}

Esta clase contiene dos métodos sincronizados: a() y b(). El primer método sincronizado, llama al otro método sincronizado.

Cuando el control entra en el método a(), el thread actual adquiere el monitor del objeto Reentrant. Ahora, a() llama a b() y como también está sincronizado el thread también intenta adquirir el monitor de nuevo. Como Java soporta los monitores re-entrantes, esto si funciona. El thread actual puede adquirir de nuevo el monitor del objeto Reentrant y se ejecutan los dos métoso a() y b(), como evidencia la salida del programa.

Estoy aquí, en b()
Estoy aquí, en a()

En sistemas que no soportan monitores re-entrantes, esta secuencia de llamadas a métodos causaría un punto muerto.

 
Patrocinados
 

Copyright © 1999-2007 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad

Hospedaje web y servidores dedicados linux por Ferca Network

red internet: musica mp3 | logos y melodias | hospedaje web linux | registro de dominios | servidores dedicados
más internet: comprar | recursos gratis | posicionamiento en buscadores | tienda virtual | gifs animados