2012-03-03 3 views
2

J'ai décompilé un fichier source et trouvé quelques instructions JVM comme JVM INSTR monitorenter et JVM INSTR monitorexit. Qu'est-ce que cela signifie?JVM INSTR monitorenter et JVM INSTR monitorexit

public boolean isRunning() 
    { 
     this; 
     JVM INSTR monitorenter ; 
     Thread thread = _thread; 
     boolean flag; 
     if(thread != null) 
      flag = true; 
     else 
      flag = false; 
     this; 
     JVM INSTR monitorexit ; 
     return flag; 
     Exception exception; 
     exception; 
     throw exception; 
    } 

De même que Exception exception; , exception; et jeter l'exception; signifier?

Répondre

5

monitorenter et monitorexit sont documentés dans la spécification JVM, avec toutes les autres instructions de bytecode. Fondamentalement, ils sont utilisés pour mettre en œuvre synchronized blocs et méthodes.

Il semble que votre décompilateur ne soit pas très bon, s'il n'est pas capable de trouver le Java approprié ici ... nous ne pouvons pas dire à quoi correspond la partie Exception quand il s'agit d'une sortie de décompilateur cassée. Il peut correspondre à quelque chose comme:

catch(Exception exception) 
{ 
    throw exception; 
} 

... mais je trouverais un décompilateur différent. (Pourquoi avez-vous besoin d'un décompilateur quand même?)

+0

J'utilise DJ Java Decompiler que j'ai personnellement acheté, si vous avez d'autres décompilateurs, merci de me le recommander - qui peut décompiler complètement le code java comme le code source l'était à l'origine. –

+0

@OsamaMohammedShaikh: Quelle est la raison valable pour décompiler le code en premier lieu? –

+0

Pourquoi me demandes-tu cela? Personne ne pose de telles questions en premier lieu. C'est une question simple si vous avez des recommandations solides pour un décompiler fort, s'il vous plaît dites-moi. Comme j'en ai besoin pour décompiler un fichier source pour mon projet de référence. –