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.
Was ist sequentieller Stream?
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.
Was ist paralleler Stream?
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:
-
Die Grenzfläche
-
Collection
enthält dieparallelStream()
-Methode zum Erstellen paralleler Streams.
Die -
BaseStream
Schnittstelle enthält dieparallel()
-Methode, mit der sequentielle Streams in parallele Streams umgewandelt werden können.
Der Unterschied zwischen sequentiellem Fluss und parallelem Fluss
Die folgende Tabelle fasst die Hauptunterschiede zwischen sequentiellen Streams und parallele Streams in Java zusammen:
顺序流 | 并行流 |
---|---|
在计算机的单个内核上执行。 | 在计算机的多个内核上执行。 |
性能较慢。 | 性能较快。 |
执行过程中保持顺序。 | 执行过程中不保证顺序。 |
一次只能进行单个迭代。 | 由于在多个内核上执行,可以进行多个迭代。 |
每个迭代必须等待前一个迭代完成才能执行。 | 如果所有内核都繁忙,则流必须等待;否则,它们将同时执行而无需等待。 |
出错概率较低。 | 出错概率较高。 |
与平台无关。 | 依赖于平台。 |
Schlussfolgerung
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.
sequentielle und parallele Stream FAQ
1.
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.
2.
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.
3.
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.
4.
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.
5.
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!

Beim Studium des MyBatis -Frameworks stoßen Entwickler häufig auf verschiedene Probleme in Bezug auf Anmerkungen. Eine der häufigsten Fragen ist, wie die @ResultType -Annotation richtig verwendet wird ...

Methoden zur Verwendung von Technologie zur Verarbeitung natürlicher Sprache, um Personaldaten in modernen Unternehmen abzufragen, ist die Verwaltung und Abfrage von Personaldaten eine häufigste Anforderung. Angenommen, wir ...

Datenbankzugriffsleistungsproblem im Springboot-Projekt Multi-Daten-Quellkonfiguration Dieser Artikel zielt darauf ab, Atomikos für die Konfiguration von Multi-Data-Quellen in einem Springboot-Projekt zu verwenden ...

Beim Verpacken eines Java -Projekts in eine ausführbare JAR -Datei stößt es auf das Problem von NoclassDeffoundError. Viele Java -Entwickler können ...

In Bezug auf die Analysemethode des Intellijidea Cracks in der Programmierwelt, Intellij ...

Problemeinführung: Eine verbesserte Videoqualität ist ein wichtiger Bestandteil der Videoverarbeitung, insbesondere bei der Verarbeitung von Videos mit niedriger Definition, der Verwendung von Java-Sprache und ...

Bei der Behandlung von Springboot -Anwendungen stoßen wir häufig auf das Problem, wie Anforderungsparameter korrekt empfangen werden. Vor allem, wenn das Parameterformat kein gemeinsamer JSON ist, mehr ...

Die Auswirkungen der Hinzufügen von statischer Erklärung bei der Erklärung von Concurrenthashmap in Java in Java -Programmierung, Concurrenthashmap ...


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

PHPStorm Mac-Version
Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

SAP NetWeaver Server-Adapter für Eclipse
Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

EditPlus chinesische Crack-Version
Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

DVWA
Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software