如何在Java中使用Eclipse在同一监视器上查找所有同步?

使用Eclipse可以找到方法,成员或类的所有引用。 是否也可以找到所有对同步监视器的引用?

如果Eclipse无法实现,那么是否可以使用另一个Java IDE?

我的问题是监视器对象有很多引用。 搜索所有引用将返回到许多结果。 我只会看到与这个对象同步的地方。

编辑:我添加一个示例我的意思是:

public class LockClass{
  public synchronized void add(Object any){
  }
}

public class AnyOther{
  private LockClass lock;

  public AnyOther(LockClass lock){
    this.lock = lock;
  }

  public void doSomethings(){
    synchronized(lock){
      //...
    }
}

现在我想要所有使用LockClass作为监视器的同步搜索。 这是一个静态分析。 在我的示例中,我希望找到:

  • LockClass.add
  • AnyOther.doSomethigs

  • 让我们直接看一些术语:

  • 同步块的监视器实际上是对象上的监视器
  • 对同步监视器的引用是模糊的:你想要引用该监视器的代码中的所有位置,还是指向监视器的所有字段/局部变量?
  • 代码中监视器被引用的地方在哪里?

    Suraj已经描述了如何做到这一点: Search > References > Workspace... 您也可以将这些引用过滤为只读访问,写访问,实现器等。这些引用可以通过静态代码分析找到,因此不需要运行该应用程序。 然而,这不会自动检测到对对象的引用分配给一个字段的情况,然后将该字段分配给另一个变量。 这只能检测对该对象的此特定引用的引用。

    显示器指向哪些变量?

    这将处理几个字段/局部变量引用对象的情况。 为此,应用程序必须正在运行。 你需要把断点放在适当的地方,监视器是可见的(最简单的方法是在同步块周围的某个地方使用监视器)。 变量视图将显示当前范围内可用的所有变量。 您可以通过在Variables视图中选择对象的引用来获取对对象的All References... ,并带上下文菜单并选择All References... 这将显示引用该对象的所有字段/局部变量。


    要找到参考: Select your element->rt-click menu->References->workspace

    无法在同一个对象上找到所有可能的同步块,因为引用指向的实际对象将取决于运行时。


    Eclipse将无法找到某个对象的引用。 它只能找到对某个符号的引用,例如一个变量,一个类,一个方法aso监视器可以是this变量的值或者是一个变量o的值 - 它们都在运行时指向同一个对象。 但是,Eclipse无法提取这样的运行时信息。

    链接地址: http://www.djcxy.com/p/53339.html

    上一篇: How can I find all synchronized on the same monitor in Java with Eclipse?

    下一篇: How do I setup configuration when I use command line to build C#/.NET?