Maison  >  Article  >  Java  >  Introduction à l'implémentation des IO réseau en Java (image et texte)

Introduction à l'implémentation des IO réseau en Java (image et texte)

黄舟
黄舟original
2017-03-17 10:03:551428parcourir

Cet article présente principalement les informations pertinentes sur la mise en œuvre des IO réseau en Java (BIO, NIO, AIO). Les amis qui en ont besoin peuvent se référer à

Dans Réseau Programmation . La chose la plus exposée est l'utilisation de Socket pour le développement de la communication réseau. En Java, il existe principalement trois méthodes d'implémentation : BIO, NIO et AIO.

J'ai toujours semblé comprendre l'analyse de ces trois concepts, mais l'expression n'était pas très claire. Voici une synthèse pour clarifier pleinement l'analyse.

1. Méthode BIO

Tout d'abord, je vais l'expliquer dans un langage plus populaire :

BIO bloque IO, chaque TCP Lors de la connexion au serveur, vous devez créer un thread pour établir la connexion et traiter le message. Si le blocage se produit au milieu (par exemple, lors de l'établissement d'une connexion, de la lecture ou de l'écriture de données), le thread sera également bloqué. Dans une situation concurrente, N connexions nécessitent N threads pour être traitées.
L'inconvénient de cette méthode est qu'elle est très inefficace dans des conditions concurrentes.

Ce qui suit est un schéma pour illustrer le fonctionnement de la méthode BIO

2. >NIO a été proposé par JDK1.4. Permettez-moi d'abord d'expliquer le principe de fonctionnement de NIO d'une manière simple :

NIO est une IO non bloquante, basée sur un

événement

. driverL'idée (Modèle de thread Reactor). Par rapport à BIO, NIO utilise un seul thread pour gérer tous les canaux Socket, basé sur le mécanisme Selector. Lorsqu'un événement est interrogé (connexion, acceptation de connexion, lecture, écriture), il sera transmis à différents threads de traitement (gestionnaire). Le schéma d'application fonctionnel du modèle Reactor est donné ci-dessous :


Méthode AIO

AIO est proposé par JDK1.7, qui est une IO asynchrone. AIO utilise le mode Proactor. La première chose que nous devrions analyser est la différence entre AIO et NIO :

(1) La notification NIO se produit avant le gestionnaire

(2) La notification AIO est un rappel qui se produit après la lecture et l'écriture, etc. il y a une notification, cela signifie que l'opération concernée est terminée.

Lorsque AIO effectue des opérations de lecture et d'écriture, il lui suffit d'appeler la méthode de lecture/écriture correspondante et de transmettre le CompletionHandler (gestionnaire d'achèvement d'action). Le CompletionHandler sera appelé une fois l'action terminée. La notification NIO se produit avant l'action, lorsqu'elle est lisible et inscriptible. Une fois que le sélecteur a découvert ces événements, il notifie et appelle le gestionnaire pour le traitement

Le diagramme de workflow du mode Proactor est donné ci-dessous :

.


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn