Threads de Control

El sistema de ejecucin 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 slo 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 mtodos sincronizados: a() y b(). El primer mtodo sincronizado, llama al otro mtodo sincronizado.

Cuando el control entra en el mtodo a(), el thread actual adquiere el monitor del objeto Reentrant. Ahora, a() llama a b() y como tambin est sincronizado el thread tambin 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 mtoso 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 mtodos causara un punto muerto.

COMPARTE ESTE ARTÍCULO

ENVIAR A UN AMIGO
COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN GOOGLE +
ARTÍCULO ANTERIOR

SIGUIENTE ARTÍCULO

HAY 1 COMENTARIOS
  • Anónimo dijo:

    Hola muy buena la explicaion sobre threads, pero tuvieras algun ejemplo pero aplicado a action sript 2 o php

Conéctate o Regístrate para dejar tu comentario.