Chamada de métodos e retorno de valores
As chamadas de um método são:
- invokevirtual: Chama um método de uma instância
- invokeinterface: Chama um método de uma interface
- invokespecial: Chamada de um método privado ou da superclasse
- invokestatic: Realiza a chamada de um método estático
- invokedynamic: Método que constrói um objeto
O retorno de uma instrução pode ser definido (ireturn
, lreturn
, freturn
, dreturn
e areturn
). Durante a execução do método caso seja interrompida de maneira inesperada com uma exceção a chamada athrow é realizada. Os métodos síncronos são possíveis graças à presença de um simples encapsulando chamado de monitor, esses tipos de métodos são definidos pela flag ACC_SYNCHRONIZED
em seu constate pool, que quando possui tal flag o método entra no monitor(monitorenter
) e é executado, e nenhuma outra Thread pode acessá-lo, e sai (monitorexit
) quando seu método é encerrado (de um modo normal ou por interrupção).