Cet article présente principalement l'explication détaillée et la comparaison de NIO et IO de Java. Les amis qui en ont besoin peuvent s'y référer
La différence entre NIO et IO de Java
NIO est une IO asynchrone introduite dans JDK1.4. La partie centrale de NIO est composée de trois points :
Channel
Buffer
<.>Comparaison entre NIO et IO
La différence entre NIO et IO, d'une manière générale Sous trois aspects :Basé sur Stream Traditional IO basé sur Buffer
est orienté vers le flux d'octets ou le flux de caractères, mais dans NIO, nous avons abandonné le flux IO traditionnel et introduit les concepts de Channel et Buffer. Dans NIO, je ne peux lire que les données d'un canal dans un tampon ou écrire des données d'un tampon dans un canal. Alors, qu'est-ce qui est basé sur le flux ? Dans les opérations Java IO générales, nous lisons séquentiellement un ou plusieurs octets d'un flux de manière continue, nous ne pouvons donc pas modifier les données lues à volonté. .Contrairement à IO, qui est une opération séquentielle, dans NIO, nous pouvons lire des données à n'importe quel endroit et à volonté.
Blocage et non-blocage
Les différentes opérations Stream fournies par Java sont bloquantes. Par exemple, on appelle une méthode read pour lire le contenu d'un. fichier, Ensuite, le thread appelant read sera bloqué jusqu'à ce que l'opération de lecture soit terminée. Le mode non bloquant de NIO nous permet d'effectuer des opérations d'E/S de manière non bloquante. Par exemple, nous devons lire les données du réseau. Dans le mode non bloquant de NIO, lorsque nous appelons la méthode read, s'il y a des données à ce moment, read lit et renvoie s'il n'y a pas de données à ce moment, read renvoie ; directement et ne bloquera pas le thread actuel.sélecteur
le sélecteur est un concept unique à NIO. C'est la clé pour laquelle Java NIO peut effectuer des opérations d'E/S de manière non bloquante.Grâce au sélecteur, un thread peut surveiller les événements IO de plusieurs canaux. Lorsque nous enregistrons un canal dans un sélecteur, le mécanisme interne du sélecteur peut automatiquement demander (sélectionner) pour nous si ces canaux enregistrés sont disponibles. événements (tels que lisible, inscriptible, connexion réseau terminée, etc.). Grâce à un tel mécanisme de sélection, nous pouvons facilement utiliser un seul thread pour gérer efficacement plusieurs canaux.
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!