Java-Reactor-Muster mit java.io-Paket

9

Ich sehe in mehreren Anwendungsquellen wie Minecraft und JIrcs beide java.io, um Reactor Plugin zu implementieren (wenn ich nicht falsch liege) und auch in diesem Artikel . Also, was ist der Unterschied zwischen java.io und java.nio bei der Implementierung von Reactor Pattern? Ich meine, wie Leistungsvorteil, Prozesseffizienz usw. und wo ich gutes Tutorial bekommen kann, wenn Sie denken, dass java.io die gute Lösung ist, um Reactor Pattern zu implementieren (da Google mir Tonnen von java.nio gibt tut java.io nicht wie ich will)

    
pengemizt 29.03.2012, 19:49
quelle

3 Antworten

0

Ich hoffe, Sie können eine Schlussfolgerung mit dem folgenden Informationen aus dem Buch auf Seite Nr.42

  

java.io. * -Klassen verwenden das Decorator-Entwurfsmuster . Der Dekorateur   Entwurfsmuster bindet zur Laufzeit Aufgaben an Objekte an.   Decorators sind flexibler als Vererbung, weil die    Vererbung fügt den Klassen zur Kompilierungszeit die Verantwortung hinzu . Die Klassen java.io. * verwenden das Dekoratormuster, um verschiedene zu konstruieren   Kombinationen von Verhalten zur Laufzeit basierend auf einigen Basisklassen.

und 43.

  

Java war lange nicht geeignet, um Programme zu entwickeln, die ein   Viele E / A-Operationen. Darüber hinaus häufig benötigte Aufgaben wie Datei   Sperren, nicht blockierende und asynchrone E / A-Operationen und Fähigkeit zu   Map-Datei im Speicher waren nicht verfügbar. Nicht blockierende E / A-Vorgänge   wurden durch Arbeiten wie Multithreading oder die Verwendung von JNI erreicht.   Die Neue I / O-API (aka NIO ) in J2SE 1/4 hat dies geändert   Lage.          Die Verfügbarkeit eines Servers für die Verarbeitung mehrerer Clientanforderungen hängt effektiv von der Verwendung von E / A-Datenströmen ab. Wenn ein Server es muss   Hunderte von Clients gleichzeitig verwalten, muss es in der Lage sein, I / O zu verwenden   Services gleichzeitig, eine Möglichkeit, um dieses Szenario in Java gerecht zu werden ist   Verwenden Sie Threads, aber mit fast eins zu eins Verhältnis von Threads (100 Clients   wird 100 Threads haben) ist anfällig für einen enormen Overhead und kann   führen zu Leistungs - und Skalierbarkeitsproblemen aufgrund von   Speicherstapel (d. h. jeder Thread hat seinen Stack, siehe Q34 ,    Q42 im Java-Abschnitt) und CPU-Kontextwechsel (d. h. zwischen Threads wechseln statt echte Berechnungen durchführen). Überwinden   Dieses Problem, eine neue Reihe von nicht blockierenden I / O-Klassen wurden   Einführung in die Java-Plattform im Paket java.nio. Das Nicht-Blockieren   Der I / O-Mechanismus ist um Selektoren und Kanäle herum aufgebaut. Kanäle ,    Puffer und Selektoren sind der Kern des NIO.

und Lesen Sie mehr . Hier sind einige Referenzlinks, die Java IO gegenüber Java NIO bieten: Java IO schneller als NIO - Alt ist wieder neu! , Java IO vs. Java NIO und IO vs. NIO - Unterbrechungen, Timeouts und Puffer .

    
Visruth 26.01.2013, 11:54
quelle
1

Es ist nicht wirklich wahr, dass NIO schneller ist. Paul Tyma hat diesen Mythos irgendwann wieder zerstört.

Ссылка

Ссылка

Hoffen Sie, dass Hilfe.

    
Krebto 23.05.2014 11:30
quelle
0

Es ist wichtig, die Unterschiede zwischen blockierenden und nicht blockierenden E / A zu verstehen. Das java.io -Paket unterstützt NICHT nicht blockierende E / A, sodass es für eine große Anzahl von Verbindungen nicht skaliert werden kann. Darüber hinaus können Sie bei blockierenden E / A nur auf das schreckliche Ein-Client-zu-ein-Thread-Modell zurückgreifen, das für Systeme mit niedriger Latenz völlig ungeeignet ist. Ich schlage vor, dass Sie einen Blick auf diesen von mir geschriebenen Artikel werfen eine asynchrone Netzwerk-E / A-Bibliothek, die das Reaktormuster implementiert, damit Sie verstehen können, wie Nicht-Blockierung in Hochleistungssystemen eine Schlüsselrolle spielt.

    
rdalmeida 23.05.2014 03:11
quelle

Tags und Links