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

标签 java multithreading comparator

或者我应该只关心在类似 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/

相关文章:

java - 同步Web服务方法有意义吗?

c++ - 在哪些情况下我需要锁定变量以防止同时访问?

ios - 如何从后台任务添加和重绘 CALayer?

java - 用于对 map 进行排序的比较器

java - 从 ArrayList<URLConnection> 中移除 URLConnection 对象

java - addCookie() 在 Tomcat 7 中不起作用

c# - 在 C# 控制台应用程序中使用线程概念并行执行超过 2 个 Dtsx 包

java - 在 Java 中使用比较器自定义排序字母数字字符串

java - 如何按字段对自定义对象的集合进行排序,该字段本身就是一个对象java

java - TextView 不会在 ListView 适配器中设置 Text()