或者我应该只关心在类似 java.util.Arrays.parallelSort(T[] a, Comparator<? super T> cmp)
的并行实现中使用时?
最佳答案
比较方法本质上是一种针对对象进行评估的纯函数,这些对象至少在排序操作期间可能被认为是不可变的。在排序期间改变对象会破坏任何排序算法的基本假设,即 Comparator
强加的顺序在整个操作过程中是稳定的。
上面的意思是,虽然比较器在并行排序中使用时必须是线程安全的,但它通常是给定的,不需要特别的努力。另一方面,出于某种原因,您确实需要确保它不包含线程不安全的代码,例如使用在 compare()
的所有调用之间共享的线程不安全的协作者实例.
关于java - java.util.Comparator.compare(T o1, T o2) 的实现应该是线程安全的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31717796/