An apparatus and method for avoiding deadlocks in a multithreaded
environment is provided. The apparatus and method provide a mechanism by
which multiple threads are allowed to call a method virtually
simultaneously without experiencing the problems regarding multiple
compilations of the same method or a lock being held by one thread while
other threads wait on the lock. With the apparatus and method, the first
thread to call a method is the thread that causes the method to be
compiled. Subsequent calls to the method, during a period of time in which
the method is being compiled, are redirected to the JVM interpreter,
thereby avoiding any deadlock situation.
Un aparato y un método para evitar callejones sin salida en a multithreaded el ambiente se proporciona. Los aparatos y el método proporcionan un mecanismo por el cual los hilos de rosca múltiples se permitan llamar un método virtualmente simultáneamente sin experimentar los problemas con respecto a las compilaciones múltiples del mismo método o de una cerradura que es sostenida por un hilo de rosca mientras que otros hilos de rosca esperan en la cerradura. Con el aparato y el método, el primer hilo de rosca para llamar un método es el hilo de rosca que hace el método ser compilado. Las llamadas subsecuentes al método, durante un período del tiempo en el cual se esté compilando el método, se vuelven a dirigir al intérprete de JVM, de tal modo evitando cualquier situación del callejón sin salida.