Maison  >  Article  >  Java  >  La différence entre java nio et io

La différence entre java nio et io

王林
王林original
2019-11-09 16:57:592445parcourir

La différence entre java nio et io

Les principales différences entre IO et NIO en Java, comme le montre la figure :

La différence entre java nio et io

1. orienté et orienté tampon

IO est orienté flux et NIO est orienté tampon.

Java IO est orienté flux, ce qui signifie qu'un ou plusieurs octets sont lus à partir du flux à la fois, et jusqu'à ce que tous les octets aient été lus, ils ne sont mis en cache nulle part.

L'approche orientée tampon de Java NIO est légèrement différente. Les données sont lues dans un tampon qu'elles traitent ultérieurement, en se déplaçant d'avant en arrière dans le tampon selon les besoins.

2. IO bloquantes et non bloquantes

Les différents flux de Java IO sont bloquants. Lorsqu'un thread appelle read() ou write(), le thread est bloqué jusqu'à ce que certaines données soient lues ou que les données soient complètement écrites.

Le mode non bloquant de Java NIO permet à un thread d'envoyer une requête de lecture de données à partir d'un canal, mais il ne peut obtenir que les données actuellement disponibles. Si aucune donnée n'est actuellement disponible, rien ne sera obtenu. Au lieu de maintenir le thread bloqué, celui-ci peut continuer à faire autre chose jusqu'à ce que les données deviennent lisibles.

3. Sélecteur

Le sélecteur de Java NIO permet à un thread séparé de surveiller plusieurs canaux d'entrée. Vous pouvez enregistrer plusieurs canaux à l'aide d'un seul sélecteur. Un thread séparé est ensuite utilisé pour. "sélectionnez" les canaux qui ont déjà une entrée pouvant être traitée, ou sélectionnez les canaux qui sont prêts à être écrits. Ce mécanisme de sélection permet à un seul thread de gérer facilement plusieurs canaux.

Tutoriel recommandé : Tutoriel Java

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