2017-01-28 11 views
0

I持っている書籍「impatients用のJava 8」から次の質問:ラムダ式 - Arrays.sortメソッドが同じスレッドと呼ばれるかどうか。

をソートするコールまたは別のスレッド と同じスレッドで呼び出さは、Arrays.sort方法でコンパレータのコードですか?

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

私はこの質問を正しく理解しているかどうかわかりません。同じスレッドを実行してはいけませんか?マルチスレッドの問題はなぜ発生するのでしょうか?

+0

質問をよくお読みください。 – user1539343

+0

あなたは自分自身で質問に答えました。 – Holger

答えて

1

問題のコードをステップ実行するだけで済みます。 - >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

同じスレッドで何が起こって、すべてのシングルスレッドである

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

そして、そこから:あなたのIDEまたはgrepcode経由。

関連する問題