guava-libraries有一个班级Ordering。我想知道它是否是线程安全的。
例如,它可以用作静态变量吗?
public static Ordering<String> BY_LENGTH_ORDERING = new Ordering<String>() {
public int compare(String left, String right) {
return Ints.compare(left.length(), right.length());
}
};
答案 0 :(得分:8)
它与compare
方法一样具有线程安全性。
Ordering的默认实现没有任何实例数据,因此唯一重要的是如何定义比较方法。
答案 1 :(得分:5)
是的,Ordering
对象都是不可变的,除非你做了一些让它们变得可变的东西,例如扩展Ordering
并添加可变字段,或者在{{1}中提供可变Comparator
方法或from(Comparator)
中的可变Function
。
但通常情况下,你真的不得不自己做一个非线程安全的方法。