[英]How can I find all synchronized on the same monitor in Java with 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作为监视器的同步搜索。 这是一个静态分析。 在我的样本中,我想找到:
要查找引用: Select your element->rt-click menu->References->workspace
它不可能在同一个对象上找到所有可能的同步块,因为引用指向的实际对象将在运行时依赖。
Eclipse将无法找到对某个对象的引用。 它只能找到对某个符号的引用,例如变量,类,方法aso监视器可以是this
或变量的值o
- 在运行时指向同一个对象。 但是,Eclipse无法提取这样的运行时信息。
让我们直截了当地说出一些条款:
代码中的哪个位置引用了监视器?
Suraj已经描述了如何执行此操作: Search > References > Workspace...
您还可以将这些引用过滤为只读访问,写访问,实现器等。这些引用是通过静态代码分析找到的,因此无需运行应用程序。 但是,这不会自动检测将对象的引用分配给字段的情况,然后将该字段分配给另一个变量。 这仅检测对该对象的特定引用的引用。
哪个变量指向显示器?
这将处理几个字段/局部变量引用对象的情况。 为此,应用程序必须正在运行。 您需要将断点放在监视器可见的适当位置(最简单的方法是在同步块周围的某个地方,使用有问题的监视器)。 “变量”视图将显示当前范围中的所有可用变量。 您可以通过在“变量”视图中选择对象的引用,获取上下文菜单并选择“ All References...
来获取对象的All References...
。 这将显示引用该对象的所有字段/局部变量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.