guava-library - Поток класса Ordering безопасен?

Guava-библиотеки имеют класс Ordering . Мне интересно, является ли он потокобезопасным.

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

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

7
задан ColinD 15 April 2011 в 21:40
поделиться

2 ответа

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

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

8
ответ дан 6 December 2019 в 19:30
поделиться

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

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

5
ответ дан 6 December 2019 в 19:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: