我在“Java 8 for the impatients”一书中提到了以下问题:
Arrays.sort方法中的比较器代码是否在同一个线程中调用 对排序或不同线程的调用?
Arrays.sort(words,
(first, second) -> Integer.compare(first.length(), second.length()));
我不确定我是否正确理解了这个问题。它不应该运行相同的线程吗?为什么会出现多线程问题?
答案 0 :(得分:1)
您可以直接浏览相关代码,例如通过您的IDE或grepcode:
public static <T> void More ...sort(T[] a, Comparator<? super T> c) {
if (c == null) {
sort(a);
} else {
if (LegacyMergeSort.userRequested)
legacyMergeSort(a, c);
else
TimSort.sort(a, 0, a.length, c, null, 0, 0);
}
}
这是所有单线程,发生在同一个线程中。