Heim  >  Artikel  >  Java  >  Warum ist Java io wichtig?

Warum ist Java io wichtig?

(*-*)浩
(*-*)浩Original
2019-05-29 16:59:212410Durchsuche

Der E/A-Stream von Java ist die Grundlage für die Implementierung von Eingabe-/Ausgabevorgängen. Verschiedene Eingabe-/Ausgabequellen werden in Java abstrakt ausgedrückt.

Ein Stream ist eine Menge geordneter Bytes und ein allgemeiner Begriff oder eine Abstraktion für die Datenübertragung.

Streams haben Eingabe und Ausgabe. Bei der Eingabe fließt der Stream von der Datenquelle zum Programm. Bei der Ausgabe wird der Stream vom Programm an die Datenquelle übertragen. Die Datenquelle kann Speicher, Datei, Netzwerk oder Programm usw. sein.

Warum ist Java io wichtig?

Benutzerprozess und Betriebssystemkernel

IO in Java kann als zwischen dem Java-Programm und dem Betriebssystemkernel stehend verstanden werden zwischen Objekten.
Das später erwähnte Blockieren und Nichtblockieren, Synchronisieren und Asynchronisieren sind das Ergebnis der Interaktion zwischen diesen beiden Objekten. In diesem Artikel bezieht sich der Benutzerprozess auf das Java-Programm.

Programmraum und Kernelraum

Warten, bis die Daten bereit sind (Warten, bis die Daten im Kernelpuffer ankommen)

Kopieren der Daten vom Kernel zum Prozess (Daten vom Kernel-Puffer in den Programmpuffer kopieren)

Unter Linux werden die Daten bei einem Lese-E/A-Vorgang nicht direkt in den Programmpuffer des Programms kopiert.

Es wird zuerst in den Puffer des Betriebssystemkernels kopiert und dann vom Puffer des Betriebssystemkernels in den Puffer der Anwendung kopiert.

Programmspeicherplatz: der den Benutzerprogrammen zugewiesene Speicherplatz.

Kernelraum: Der Speicherplatz, der dem Kernel gehört.

Blockierend und nicht blockierend

Blockierung: Nachdem der Benutzerprozess einen Systemaufruf durchführt, ist der Benutzerprozess immer gesperrt und kann keine anderen Vorgänge ausführen

Nicht blockierend: Nachdem der Benutzerprozess einen Systemaufruf getätigt hat, ist der Benutzerprozess nicht gesperrt und kann andere Vorgänge ausführen

Blockieren und Nichtblockieren beziehen sich auf den Status des Benutzerprozesses, dh darauf, ob der Benutzer Prozess ist gesperrt

Synchron und asynchron

Eine synchrone E/A-Operation führt dazu, dass der anfordernde Prozess blockiert wird, bis diese E/A-Operation abgeschlossen ist.
Eine asynchrone Der E/A-Vorgang führt nicht dazu, dass der anfordernde Prozess blockiert wird.

Ein synchroner E/A-Vorgang führt dazu, dass der anfordernde Prozess blockiert wird, bis der E/A-Vorgang abgeschlossen ist. Ein asynchroner E/A-Vorgang führt nicht dazu, dass der anfordernde Thread blockiert wird.

Synchronisation: Der Benutzerthread und der Io-Thread machen dasselbe (der Benutzerthread ist blockiert und wartet darauf, dass der Kernel das Verarbeitungsergebnis zurückgibt)

Asynchron: Der Benutzerthread und der Io Thread macht verschiedene Dinge (der Benutzer-Thread ist nicht blockiert, er führt andere Dinge aus, die Kernel-Verarbeitung wird abgeschlossen und das Ergebnis wird an den Benutzer-Thread gesendet)

Dateideskriptor

Unter Linux ist alles eine Datei. Ein Dateideskriptor ist ein vom Kernel erstellter Index für eine Datei. Alle E/A-Vorgänge werden durch Aufrufen des Dateideskriptors (Index) ausgeführt, einschließlich des unten erwähnten Sockets. Beim ersten Start von Linux wird automatisch 0 als Standardeingabe, 1 als Standardausgabe und 2 als Standardfehler festgelegt.

Das obige ist der detaillierte Inhalt vonWarum ist Java io wichtig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn