java.util.Comparator.compare(T o1,T o2)的实现是否应该是线程安全的?

Edu*_*rdo 4 java multithreading comparator

或者我应该只关心在并行实现中使用java.util.Arrays.parallelSort(T[] a, Comparator<? super T> cmp)吗?

Mar*_*nik 5

比较方法本质上是针对对象评估的纯函数,其至少在排序操作期间可被认为是不可变的.在排序期间对对象进行变换将破坏任何排序算法的基本假设,即在Comparator整个操作过程中所施加的顺序是稳定的.

上述意味着,虽然比较器在并行排序时必须是线程安全的,但通常不需要特别的努力就可以给出.另一方面,您需要确保它不包含由于某种原因而导致的线程不安全的代码,例如使用在所有调用中共享的线程不安全的协作者实例compare().