guava-library - Поток класса Ordering безопасен? - PullRequest
7 голосов
/ 26 августа 2010

Библиотеки гуавы имеют класс Порядок . Мне интересно, если это потокобезопасно.

Например, может ли он использоваться как статическая переменная?

public static Ordering<String> BY_LENGTH_ORDERING = new Ordering<String>() {
   public int compare(String left, String right) {
      return Ints.compare(left.length(), right.length());
   }
};

Ответы [ 2 ]

8 голосов
/ 26 августа 2010

Такой же потокобезопасный, как и ваш compare метод.

Реализация Ordering по умолчанию не имеет данных экземпляра, поэтому важно только то, как вы определяете метод сравнения.

5 голосов
/ 26 августа 2010

Да, Ordering объекты являются неизменяемыми, если вы не сделаете что-то, чтобы сделать их изменяемыми, например, добавив Ordering и добавив изменяемые поля, или предоставив изменяемый Comparator в методе from(Comparator) или изменяемый Function в onResultOf(Function).

Но, как правило, вам действительно нужно изо всех сил, чтобы сделать тот, который не является потокобезопасным.

...