Heim >Java >javaLernprogramm >Unterschied zwischen parallelen und sequentiellen Streams in Java
Java 8 führt einen Stream ein, der sich im java.util.stream
-Paket befindet. Stream ist eine Abfolge von Objekten, ähnlich wie ein Array oder eine Sammlung, und unterstützt eine Vielzahl von Methoden und Aggregationsvorgängen, einschließlich Filterung, Zuordnung, Reduzierung, Begrenzung, Übereinstimmung und Finden. Diese Vorgänge ändern nicht die ursprüngliche Datenquelle, sondern erstellen einen neuen Stream für die Verarbeitung. Streams sind hauptsächlich in zwei Typen unterteilt: sequentieller Stream und paralleler Stream. Dieser Artikel konzentriert sich auf die Unterschiede zwischen den beiden.
sequentielle Streams verwenden einen einzelnen Thread, um Daten in der Pipeline zu verarbeiten. Objekte im sequentiellen Strom befinden sich im selben Verarbeitungssystem und werden in der Reihenfolge angeordnet, sodass sie nicht mit einem Multi-Core-System verarbeitet werden.
Parallele Streams verwenden Multi-Core-Prozessoren, um die Programmleistung zu verbessern. Der Code wird durch eine parallele Stream -Methode in mehrere Streams unterteilt, die parallel auf verschiedenen Kerneln ausgeführt werden. Die endgültigen Ergebnisse werden nach dem Zusammenführen angezeigt. Da die Ausführung vom Entwickler nicht kontrolliert wird, können die Ergebnisse gestört werden. Parallele Flüsse können auf folgende Weise verwendet werden:
Collection
enthält die parallelStream()
-Methode zum Erstellen paralleler Streams. BaseStream
Schnittstelle enthält die parallel()
-Methode, mit der sequentielle Streams in parallele Streams umgewandelt werden können. Die folgende Tabelle fasst die Hauptunterschiede zwischen sequentiellen Streams und parallele Streams in Java zusammen:
顺序流 | 并行流 |
---|---|
在计算机的单个内核上执行。 | 在计算机的多个内核上执行。 |
性能较慢。 | 性能较快。 |
执行过程中保持顺序。 | 执行过程中不保证顺序。 |
一次只能进行单个迭代。 | 由于在多个内核上执行,可以进行多个迭代。 |
每个迭代必须等待前一个迭代完成才能执行。 | 如果所有内核都繁忙,则流必须等待;否则,它们将同时执行而无需等待。 |
出错概率较低。 | 出错概率较高。 |
与平台无关。 | 依赖于平台。 |
Stream in Java ist hauptsächlich in sequentielle Streams und parallele Streams unterteilt. Sequentielle Streams führen Objekte nacheinander aus, wobei geordnete Ergebnisse, die mit einem einzelnen Kern des Computers ausgeführt wurden, langsam, aber nicht plattformbedingt. Parallele Streams werden unter Verwendung mehrerer Computerkerne ausgeführt, und die Leistung ist schnell, aber das Ergebnis ist nicht in Ordnung.
sequentielles Streaming ist plattformbedingt, da es nur einen einzelnen Kernel zum Ausführen von Code verwendet. Parallele Streams verwenden mehrere Kernel, um Code auszuführen, sodass sie von der Plattform abhängen.
parallele Streams sind fehleranfälliger, da sie auf mehreren Computerkernen ausgeführt werden und die Ergebnisse nicht in Ordnung sind. Die Wahrscheinlichkeit sequentieller Streaming -Fehler ist niedriger, da nur ein einzelner Kernel zum Ausführen von Code verwendet wird.
In sequentiellen Streams kann jeweils nur eine Iteration durchgeführt werden. Die nächste Iteration muss warten, bis die aktuelle Iteration abgeschlossen ist. In parallelen Strömen funktionieren Iterationen gleichzeitig auf verschiedenen Kerneln. Wenn alle Kerne beschäftigt sind, muss die Iteration warten.
sequentielle Streams bleiben während der Ausführung in Sequenz, da nur ein Kernel verwendet wird, und jede Iteration muss warten, bis die aktuelle Iteration die Ausführung abschließt.
Parallele Streaming führt schneller durch, da es mit mehreren Kernen ausgeführt wird. Sequentielle Streams verwenden nur einen Kern, daher ist die Leistung langsamer.
Das obige ist der detaillierte Inhalt vonUnterschied zwischen parallelen und sequentiellen Streams in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!