7
votes

Comment puis-je trouver tous synchronisés sur le même moniteur en Java avec Eclipse?

Avec Eclipse, il est possible de trouver toutes les références d'une méthode, d'un membre ou d'une classe. Est-il également possible de trouver toutes les références au moniteur d'un synchronisé?

Si cela n'est pas possible avec Eclipse, alors est-il possible avec un autre IDE Java?

Mon problème est que le moniteur Object Hat les références. Une recherche de toutes les références reviendra à de nombreux résultats. Je ne verrai que là où sont synchronisés avec cet objet.

EDIT: J'ajoute un échantillon ce que je veux dire: xxx

maintenant je veux chercher tous les éléments synchronisés qui Utilisez la classe Lockclass comme moniteur. Ceci est une analyse statique. Dans mon échantillon, je veux trouver:

  • localclass.add
  • anyother.dosomethigs

0 commentaires

3 Réponses :


2
votes

Pour trouver des références: Sélectionnez votre élément-> RT-Click Menu-> Références-> Espace de travail

Ce n'est pas possible de trouver tous les blocs synchronisés possibles sur le même objet, car l'objet réel pointé par une référence dépendrait d'exécution.


0 commentaires

1
votes

Eclipse ne sera pas en mesure de trouver des références à un certain objet. Il ne peut trouver que des références à un certain symbole, par ex. une variable, une classe, une méthode A..o. Un moniteur peut être ceci ou la valeur d'une variable O - les deux pointant sur le même objet au moment de l'exécution. Cependant, Eclipse n'a aucun moyen d'extraire des informations sur le temps d'exécution comme celle-là.


0 commentaires

1
votes

Obtenez quelques termes directement:

  • Le moniteur d'un bloc synchronisé est en fait le moniteur sur un objet
  • Références au moniteur d'une synchronisation est ambiguë: voulez-vous tous les endroits dans le code dans lequel ce moniteur est référencé ou tous les champs / variables locales qui pointe vers le moniteur?

    où dans le code, le moniteur est référencé?

    Suraj Décrivez déjà comment faire ceci: Recherche> Références> Espace de travail ... . Vous pouvez également filtrer ces références pour uniquement lire l'accès, l'écriture d'écriture, les implémentateurs, etc. Ces références sont trouvées via une analyse de code statique, il n'est donc pas nécessaire d'exécuter l'application. Cela ne détectera cependant pas automatiquement les cas où une référence à un objet est attribuée à un champ, qui est ensuite attribuée à une autre variable. Cela ne détecte que la référence à cette référence particulière à l'objet.

    quelles variables pointe le moniteur?

    Cela gérera le cas lorsque plusieurs champs / variables locales font référence à l'objet. Pour ce faire, l'application doit être en cours d'exécution. Vous devez mettre un point d'arrêt dans un endroit correct, où le moniteur est visible (le moyen le plus simple est quelque part autour d'un bloc synchronisé, qui utilise le moniteur en question). La vue Variables affichera toutes les variables disponibles dans la portée actuelle. Vous pouvez obtenir toutes les références à un objet en sélectionnant une référence à l'objet dans la vue Variables, apportant le menu contextuel et la sélection de toutes les références ... . Cela vous montrera tous les champs / variables locales, qui font référence à l'objet.


0 commentaires