Guava-библиотеки имеют класс Ordering . Мне интересно, является ли он потокобезопасным.
Например, можно ли его использовать в качестве статической переменной?
public static Ordering BY_LENGTH_ORDERING = new Ordering() {
public int compare(String left, String right) {
return Ints.compare(left.length(), right.length());
}
};
Оно является таким же потокобезопасным, как и ваш метод compare
.
Реализация Ordering по умолчанию не имеет никаких данных экземпляра, поэтому единственное, что имеет значение, это то, как вы определяете свой метод сравнения.
Да, все объекты Ordering
являются неизменяемыми, если вы не сделаете что-то, чтобы сделать их изменяемыми, например, расширив Ordering
и добавив изменяемые поля или предоставив изменяемый Comparator
. ] в методе from(Comparator)
или изменяемой Function
в onResultOf(Function)
.
Но, как правило, вам действительно нужно приложить все усилия, чтобы сделать код, который не является потокобезопасным.