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:字段“名称”同步不一致。