Unterschied zwischen java 8 streams und parallele streams

Schrieb ich code mit java-8-streams und parallele streams für die gleiche Funktionalität mit einem custom collector zum ausführen einer aggregation Funktion.
Wenn ich die CPU-Auslastung mit htop es zeigt alle CPU-Kerne genutzt, für die beiden `Ströme' und 'parallele streams" - version. So, es scheint, als Liste.stream() verwendet wird, es verwendet auch alle CPUs. Hier, was ist der genaue Unterschied zwischen parallelStream() und stream() in Bezug auf Nutzung von multi-core -.

  • Die nicht-parallelen streams die Verwendung von nur einem thread zur Bearbeitung Ihrer pipeline. Das ist eine harte Tatsache. Es sei denn, Sie tun etwas explicit multithreading mit stream-processing, dann werden alle bestimmten terminal-Betrieb ausgeführt wird, auf einem single core gleichzeitig. Wenn Sie beziehen sich auf die Tatsache, dass htop zeigt eine Auslastung aller cores, die nur sein kann durch den gleichen thread Migration von core zu core (nicht angeheftet, um einen single-core).
  • Es wäre besser, wenn Sie den code Ihres Programms, so können wir reproduzieren Ihre Wirkung. Wie Marko schon sagte, list.stream() arbeitet nacheinander im selben thread, in dem die terminal-Betrieb ausgestellt wurde, das ist 100% Fakt. Wir können jedoch nicht erklären, warum Sie beobachtet die CPU-Auslastung, weil wir nicht den code sehen.
  • Bitte finden Sie den code hier ein - github.com/yogirjoshi/monitortools/blob/master/src/main/java/...
  • Ich denke diese Antwort kann dir helfen:stackoverflow.com/questions/23170832/...
InformationsquelleAutor Yogi Joshi | 2015-08-02
Schreibe einen Kommentar