JD.SYNC.IN
当类对其字段的使用不一致时,出现 JD.SYNC.IN。“不一致”表示受保护使用数量超过全部使用数量的 66%。当字段使用数量大于 3 时,即报告错误。这些数字是可以更改的检查器参数。
漏洞与风险
不一致的同步可导致争用条件。
缓解与预防
字段应始终与同一个锁同步,或者不同步。部分同步是导致争用情况问题的根源。
示例 1
复制
class MyClass {
private String name;
public MyClass() {
name = "";
}
synchronized public String getName() {
return name;
}
synchronized public void setName(String name) {
this.name = name;
}
public void foo(String x) {
name = x;
}
}
针对第 10 行的字段声明报告 JD.SYNC.IN:字段“名称”同步不一致。