Llamadas de métodos y retorno de valores
Las lamadas de un método son:
- invokevirtual: Llama un método de una instancia
- invokeinterface: Llama un método de una interface
- invokespecial: Llamadas de un método privado o de la superclase
- invokestatic: Realiza la llamada de un método estático
- invokedynamic: método que construye un objeto
El retorno de una instrucción puede ser definido (ireturn
, lreturn
, freturn
, dreturn
y areturn
). Durante la ejecución del método en caso sea interrumpida de manera inesperada con una excepción se realiza la llamada a throw. Los métodos síncronos son posibles gracias a la presencia de un simple encapsulado llamado de monitor, esos tipos de métodos son definidos por el flag ACC_SYNCHRONIZED
en su constast pool, que cuando tiene tal flag el método entra en el monitor(monitorenter
) y es ejecutado, y ningun otro Thread puede accesarlo, y sale (monitorexit
) cuando su método es cerrado (de un modo normal o por interrupción).