Что означает «несогласованная синхронизация»?

Это мой класс Java 1.6:

public class Foo {
  private ArrayList<String> names;
  public void scan() {
    if (names == null) {
      synchronized (this) {
        this.names = new ArrayList<String>();
        // fill the array with data
      }
    }
  }
}

Findbugs говорит:

Inconsistent synchronization of com.XXX.Foo.names; locked 40% of time

Что он делает имею ввиду а что я делаю не так? Я пытаюсь избежать проблем, когда два или более клиентов вызывают Foo.scan () одновременно.

7
задан yegor256 15 November 2010 в 17:47
поделиться