2017-01-28 51 views
0

我從書的「Java 8的impatients」以下問題:Lambda表達式 - Arrays.sort方法被稱爲相同的線程或不是?

是在調用同一個線程 調用排序或不同的線程的Arrays.sort方法比較代碼?

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

我不知道我是否正確理解這個問題。它應該不是運行相同的線程?爲什麼會出現多線程問題?

+0

請正確閱讀問題。 – user1539343

+0

你自己回答了這個問題。 – Holger

回答

1

您只需查看有問題的代碼,通過您的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

這是所有單線程的,在同一個線程發生。