Heim > Java > JavaBase > Hauptteil

Java-Reaktor-Reaktormuster

Guanhui
Freigeben: 2020-06-24 18:09:43
nach vorne
1976 Leute haben es durchsucht

Java-Reaktor-Reaktormuster

Reaktormuster

Reaktionen im Gerätemodus können bisher nicht vermieden werden. Viele bekannte Serversoftware oder Middleware werden basierend auf dem Reaktormodus implementiert, wie z. B. Nginx, Redis und Netty.

Das Reaktormuster ist ein Muss und ein Muss für die Hochleistungsnetzwerkprogrammierung.

Einführung in den Reaktor

Der Reaktormodus besteht aus zwei Hauptrollen: Reaktor-Reaktor-Thread und Handler-Prozessor:

(1) Reaktor Verantwortlichkeiten des Reaktorthreads: Verantwortlich für die Reaktion auf E/A-Ereignisse und deren Verteilung an Handler-Prozessoren.

(2) Verantwortung des Prozessors des Handlers: nicht blockierende Ausführung der Geschäftsverarbeitungslogik.

Aus der obigen Definition des Reaktormusters erkennen wir nichts Magisches an diesem Muster. Natürlich gibt es viele Versionen des Reaktormusters, von einfach bis komplex. Nach der bisherigen Definition handelt es sich lediglich um die einfachste Variante.

Fataler Fehler bei Multithread-OIO

In der OIO-Programmierung von Java verwendet das erste und primitivste Netzwerkserverprogramm eine While-Schleife, um den Port kontinuierlich zu überwachen für neue Verbindungen. Wenn ja, rufen Sie eine Verarbeitungsfunktion auf, um sie abzuschließen. Der Beispielcode lautet wie folgt:

@Test
 public void client() throws IOException {
   Socket client = new Socket("127.0.0.1", 9999);
   Writer writer = new OutputStreamWriter(client.getOutputStream());
   writer.write("Hello World");
   writer.flush();
   writer.close();
   client.close();
 }
 
 @Test
 public void server() throws IOException {
   ServerSocket server = new ServerSocket(9999);
   while (true){
     Socket socket = server.accept();
     Reader reader = new InputStreamReader(socket.getInputStream());
     print(reader);
     reader.close();
     socket.close();
     server.close();
   }
 }
Nach dem Login kopieren

Das größte Problem bei dieser Methode ist: Wenn das Handle (Socket) der vorherigen Netzwerkverbindung nicht verarbeitet wurde, dann Die nachfolgende Verbindungsanforderung kann nicht empfangen werden, sodass alle nachfolgenden Anforderungen blockiert werden und der Durchsatz des Servers zu niedrig ist. Für Server ist dies ein ernstes Problem.

Empfohlenes Tutorial: „Java

Das obige ist der detaillierte Inhalt vonJava-Reaktor-Reaktormuster. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:jb51.net
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!