Heim  >  Artikel  >  Java  >  Einführung in die Implementierung von Netzwerk-IO in Java (Bild und Text)

Einführung in die Implementierung von Netzwerk-IO in Java (Bild und Text)

黄舟
黄舟Original
2017-03-17 10:03:551434Durchsuche

In diesem Artikel werden hauptsächlich relevante Informationen zur Implementierung von Netzwerk-IO in Java (BIO, NIO, AIO) vorgestellt. Freunde, die sie benötigen, können sich auf

In Netzwerk-Programmierung beziehen Am auffälligsten ist die Verwendung von Socket für die Entwicklung der Netzwerkkommunikation. In Java gibt es hauptsächlich drei Implementierungsmethoden: BIO, NIO und AIO.

Ich schien die Analyse dieser drei Konzepte immer zu verstehen, aber der Ausdruck war nicht sehr klar. Hier ist eine Zusammenfassung, um die Analyse vollständig zu verdeutlichen.

1. BIO-Methode

Zunächst erkläre ich es in einer populäreren Sprache:

BIO blockiert IO, jedes TCP Wenn Sie eine Verbindung zum Server herstellen, müssen Sie einen Thread erstellen, um die Verbindung herzustellen und die Nachricht zu verarbeiten. Wenn in der Mitte eine Blockierung auftritt (z. B. beim Herstellen einer Verbindung, beim Lesen von Daten oder beim Schreiben von Daten), wird der Thread ebenfalls blockiert. In einer gleichzeitigen Situation erfordern N Verbindungen N Threads zur Verarbeitung.
Der Nachteil dieser Methode besteht darin, dass sie unter gleichzeitigen Bedingungen sehr ineffizient ist.

Das Folgende ist ein Diagramm zur Veranschaulichung der Funktionsweise der BIO

2 >NIO wurde von JDK1.4 vorgeschlagen. Lassen Sie mich zunächst das Funktionsprinzip von NIO auf einfache Weise erklären:

NIO ist nicht blockierendes IO, das auf

Ereignis

basiert TreiberDie Idee (Reactor-Thread-Modell). Im Vergleich zu BIO verwendet NIO einen Thread zur Verwaltung aller Socket-Kanäle, der auf dem Selector-Mechanismus basiert. Wenn ein Ereignis abgefragt wird (Verbindung, Verbindungsannahme, Lesen, Schreiben), wird es an verschiedene Verarbeitungsthreads (Handler) weitergeleitet. Das Arbeitsanwendungsdiagramm des Reaktormodells ist unten angegeben:


3 🎜>

AIO wird von JDK1.7 vorgeschlagen, einem asynchronen IO. AIO verwendet den Proactor-Modus. Das erste, was wir analysieren sollten, ist der Unterschied zwischen AIO und NIO:

(1) Die NIO-Benachrichtigung erfolgt vor dem Handler. (2) Die AIO-Benachrichtigung ist ein Rückruf, der nach dem Lesen und Schreiben usw. erfolgt Wenn eine Benachrichtigung vorliegt, bedeutet dies, dass der entsprechende Vorgang beendet wurde.

Wenn AIO Lese- und Schreibvorgänge ausführt, muss es nur die entsprechende Lese-/Schreibmethode aufrufen und den CompletionHandler (Handler für den Abschluss der Aktion) übergeben. Der CompletionHandler wird aufgerufen, nachdem die Aktion abgeschlossen ist. Die NIO-Benachrichtigung erfolgt vor der Aktion, wenn sie lesbar und beschreibbar ist. Nachdem der Selector diese Ereignisse entdeckt hat, benachrichtigt er den Handler und ruft ihn zur Verarbeitung auf.

Das Workflowdiagramm des Proactor-Modus ist unten angegeben:

Das obige ist der detaillierte Inhalt vonEinführung in die Implementierung von Netzwerk-IO in Java (Bild und Text). 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