Lambda表达式-Arrays.sort方法是否调用同一线程



我在《不耐烦的人的Java 8》一书中有以下问题:

是在与调用排序还是其他线程?

Arrays.sort(words,
(first, second) -> Integer.compare(first.length(), second.length()));

我不确定我是否正确理解了这个问题。它不应该运行同一个线程吗?为什么会出现多线程问题?

您可以逐步完成有问题的代码,例如通过IDE或grepcode:

http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8u40-b25/java/util/Arrays.java#Arrays.sort%28java.lang.Object%5B%5D%2Cjava.util.Comparator%29

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);
}
}

从那里开始->http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8u40-b25/java/util/TimSort.java#TimSort.sort%28java.lang.Object%5B%5D%2Cint%2Cint%2Cjava.util.Comparator%2Cjava.lang.Object%5B%5D%2Cint%2Cint%29

这都是单线程的,发生在同一个线程中。

最新更新