Warum hat Java 8 Arrays.parallelSort (), aber nicht Collections.parallelSort ()?

8

Java 8 führt einen parallelen Algorithmus für die Multi-Thread-Sortierung von Arrays in Form des überladenen Arrays.sort() Methoden.

Warum liefert es nicht auch Collections.parallelSort() für die Multi-Thread-Sortierung von List ?

    
chiastic-security 23.12.2014, 18:36
quelle

1 Antwort

2

A List erlaubt nicht notwendigerweise eine effiziente Implementierung der gleichen parallelen Sortieralgorithmen wie ein Array. Sie können es möglicherweise direkt auf ein ArrayList anwenden, aber höchstwahrscheinlich nicht auf ein LinkedList , da es keinen effizienten wahlfreien Zugriff gibt. Für diese Art von Liste gibt es effiziente Sortieralgorithmen mit mehreren Threads, die sich jedoch von einer Liste mit wahlfreiem Zugriff unterscheiden.

Tatsächlich unterstützt die threadsichere Implementierung der Schnittstelle List aufgrund der Synchronisation möglicherweise keine effiziente externe Sortierung mit mehreren Threads. Es wäre unmöglich, einen generischen Sortieralgorithmus für diese bereitzustellen, und tatsächlich könnte ein paralleler Algorithmus für sie langsamer sein als ein sequentieller Algorithmus.

    
Wormbo 26.12.2014 10:58
quelle