Die Hauptunterschiede zwischen IO und NIO in Java, wie in der Abbildung gezeigt:
1. orientiert und pufferorientiert
IO ist streamorientiert und NIO ist pufferorientiert.
Java IO ist Stream-orientiert, was bedeutet, dass ein oder mehrere Bytes gleichzeitig aus dem Stream gelesen werden und bis alle Bytes gelesen wurden, werden sie nirgendwo zwischengespeichert.
Der pufferorientierte Ansatz von Java NIO ist etwas anders. Die Daten werden in einen Puffer eingelesen, den sie später verarbeiten und bei Bedarf im Puffer hin und her bewegen.
2. Blockierende und nicht blockierende IO
Die verschiedenen Streams von Java IO sind blockierend. Wenn ein Thread read() oder write() aufruft, wird der Thread blockiert, bis einige Daten gelesen oder die Daten vollständig geschrieben wurden.
Der nicht blockierende Modus von Java NIO ermöglicht es einem Thread, eine Anfrage zum Lesen von Daten von einem bestimmten Kanal zu senden, kann jedoch nur die aktuell verfügbaren Daten abrufen. Wenn derzeit keine Daten verfügbar sind, werden keine Daten abgerufen Anstatt den Thread blockiert zu halten, kann der Thread weiterhin andere Dinge tun, bis die Daten lesbar werden.
3. Selektor
Der Selektor von Java NIO ermöglicht die Überwachung mehrerer Eingangskanäle. Sie können mehrere Kanäle mit einem Selektor registrieren. Dazu wird dann ein separater Thread verwendet „Wählen“ Sie Kanäle aus, die bereits Eingaben haben, die verarbeitet werden können, oder wählen Sie Kanäle aus, die zum Schreiben bereit sind. Dieser Auswahlmechanismus erleichtert einem einzelnen Thread die Verwaltung mehrerer Kanäle.
Empfohlenes Tutorial: Java-Tutorial
Das obige ist der detaillierte Inhalt vonDer Unterschied zwischen Java Nio und Io. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!