Table des matières
Canal et tampon
Selector
Maison Java javaDidacticiel Introduction détaillée à JAVA-1NIO

Introduction détaillée à JAVA-1NIO

Jun 25, 2017 am 10:44 AM
概述

Présentation de JAVA-1NIO

Java NIO se compose des parties principales suivantes :

  • Canaux

  • Tampons

  • Sélecteurs

Bien qu'il existe de nombreuses autres classes et composants dans Java NIO, à mon avis, Channel , Buffer et Selector constituent l'API de base. D'autres composants, tels que Pipe et FileLock, ne sont que des classes utilitaires utilisées avec les trois composants principaux. Par conséquent, dans cet aperçu, je me concentrerai sur ces trois composants. D'autres composants sont traités dans des chapitres distincts.

Canal et tampon

Fondamentalement, toutes les E/S commencent à partir d'un canal dans NIO. Les chaînes sont un peu comme les flux. Les données peuvent être lues du canal vers le tampon ou écrites du tampon vers le canal. Voici une illustration :

Il existe plusieurs types de Channel et de Buffer. Voici les implémentations de certains canaux majeurs dans JAVA NIO :

  • FileChannel

  • DatagramChannel

  • SocketChannel

  • ServerSocketChannel

Comme vous pouvez le constater, ces canaux couvrent les IO réseau UDP et TCP, ainsi que les IO fichiers.

En plus de ces classes, il existe des interfaces intéressantes, mais par souci de simplicité, j'ai essayé de ne pas les mentionner dans l'aperçu. Je les expliquerai dans d'autres chapitres de ce tutoriel où ils sont pertinents.

Voici les principales implémentations de Buffer dans Java NIO :

  • ByteBuffer

  • CharBuffer

  • DoubleBuffer

  • FloatBuffer

  • IntBuffer

  • LongBuffer

  • ShortBuffer

Ces tampons couvrent les types de données de base que vous pouvez envoyer via IO : byte, short, int, long, float, double et char.

Java NIO possède également un MappedByteBuffer, qui est utilisé pour représenter les fichiers mappés en mémoire. Je ne vais pas l'expliquer dans la présentation.

Selector

Selector permet à un seul thread de traiter plusieurs canaux. Si votre application ouvre plusieurs connexions (canaux), mais que le trafic de chaque connexion est très faible, l'utilisation de Selector peut s'avérer pratique. Par exemple, dans un serveur de chat.

Voici une illustration de l'utilisation d'un sélecteur pour traiter 3 chaînes dans un seul thread :

Pour utiliser le sélecteur, vous devez enregistrer la chaîne auprès du Sélecteur, puis appelez sa méthode select(). Cette méthode sera bloquée jusqu'à ce qu'une chaîne enregistrée ait un événement prêt. Une fois cette méthode renvoyée, le thread peut gérer ces événements. Des exemples d'événements incluent l'arrivée de nouvelles connexions, la réception de données, etc.

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 de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Présentation des problèmes de surcharge d'opérateurs et des solutions en C++ Présentation des problèmes de surcharge d'opérateurs et des solutions en C++ Oct 08, 2023 pm 01:02 PM

Présentation des problèmes de surcharge d'opérateurs et solutions en C++ Introduction : La surcharge d'opérateurs est une fonctionnalité importante du langage C++, qui permet aux programmeurs de personnaliser les opérateurs existants pour utiliser des types de données personnalisés. Cependant, la surcharge des opérateurs doit être utilisée avec prudence, car si elle est utilisée de manière inappropriée ou excessive, elle entraînera des problèmes tels qu'une lisibilité réduite du code, une ambiguïté et une efficacité réduite. Cet article décrit les problèmes courants liés à la surcharge d’opérateurs en C++ et fournit les solutions correspondantes et des exemples de code. 1. Problèmes de surcharge des opérateurs 1.1 Problème d'ambiguïté dans la surcharge des opérateurs

Python Tkinter montre sa puissance : créez de superbes applications GUI Python Tkinter montre sa puissance : créez de superbes applications GUI Mar 24, 2024 am 09:11 AM

Tkinter est une puissante bibliothèque graphique en python qui peut être utilisée pour créer des applications de bureau multiplateformes. Grâce à sa facilité d'utilisation et à son large éventail de fonctionnalités, il fournit divers outils pour créer des interfaces utilisateur, gérer des événements et gérer des mises en page. Création d'une fenêtre GUI Pour créer une fenêtre GUI, vous devez utiliser la méthode Tkinter.Tk(). Cette méthode renvoie un objet Tk() qui représente la fenêtre principale de l'application. Une fenêtre peut avoir un titre en utilisant la méthode title(), ainsi que la taille et la position de la fenêtre en utilisant la méthode Geometry(). importtkinterastkroot=tk.Tk()root.title("Ma première application Tkinter")root.g

Haute disponibilité PHP : meilleures pratiques pour une disponibilité des applications 24h/24 et 7j/7 Haute disponibilité PHP : meilleures pratiques pour une disponibilité des applications 24h/24 et 7j/7 Mar 26, 2024 pm 09:31 PM

Atteindre une haute disponibilité des applications est essentiel pour garantir un fonctionnement transparent des services métier critiques. Pour les applications créées avec PHP, plusieurs bonnes pratiques peuvent être utilisées pour atteindre une disponibilité 24h/24 et 7j/7. Basculement et équilibrage de charge tolérant aux pannes : utilisez un équilibreur de charge backend pour distribuer le trafic sur plusieurs serveurs afin d'éviter les points de défaillance uniques. Basculement : configurez un mécanisme de basculement automatique pour transférer le trafic vers un autre serveur en cas de panne. Encodage tolérant aux pannes : protégez les données contre les pannes de disque à l'aide de techniques d'encodage tolérantes aux pannes telles que RaiD ou les codes d'effacement. Mise à l'échelle automatique redondante et élastique : activez la mise à l'échelle automatique pour ajouter ou supprimer dynamiquement des serveurs en fonction de la charge. Déploiement multi-AZ : déployez des applications sur plusieurs zones de disponibilité (AZ) pour maximiser

Présentation de la bibliothèque EventLoop dans PHP8.0 Présentation de la bibliothèque EventLoop dans PHP8.0 May 14, 2023 am 08:49 AM

Avec le développement du langage PHP, les développeurs ont besoin de plus d'outils pour résoudre les besoins et les défis des applications modernes, dont la programmation événementielle, et la bibliothèque EventLoop de PHP8.0 est née dans ce but. Cet article fournira un aperçu et une introduction à la bibliothèque. Qu'est-ce qu'EventLoop Dans les applications PHP traditionnelles, la plupart des opérations sont synchrones. En d’autres termes, le programme exécutera du code, puis attendra le retour des données pertinentes, puis continuera à exécuter le code suivant. Ce modèle de programmation est utile pour certaines applications

Présentation des réseaux sans fil Présentation des réseaux sans fil Feb 19, 2024 pm 10:38 PM

Présentation des réseaux sans fil Avec le développement rapide de la technologie, les réseaux sans fil sont devenus un élément indispensable de la vie moderne. Nos téléphones mobiles, ordinateurs, maisons intelligentes et autres appareils dépendent tous des réseaux sans fil pour la communication et la connexion. Dans cet article, nous fournirons un aperçu des réseaux sans fil et discuterons de leur développement, de leurs principes et de leurs applications. Le développement des réseaux sans fil remonte à la technologie des communications radio au XIXe siècle. À cette époque, les gens utilisaient les ondes radio pour réaliser une transmission de sons et d’images à longue distance, pionnier de la communication sans fil. Avec le développement de la technologie électronique

Révéler les coulisses du framework Yii : contrôler un nouveau domaine du développement PHP Révéler les coulisses du framework Yii : contrôler un nouveau domaine du développement PHP Mar 26, 2024 am 10:31 AM

Le framework Yii est un framework PHP moderne et performant conçu pour simplifier et accélérer le développement d'applications WEB. Il fournit une base solide qui permet aux développeurs de se concentrer sur la logique métier plutôt que sur les détails de bas niveau. Architecture modulaire en coulisses : Yii adopte une architecture modulaire afin que les applications puissent être facilement étendues et personnalisées. Un module est un bloc de code indépendant et réutilisable qui peut être utilisé pour implémenter une fonctionnalité spécifique, telle que la gestion des utilisateurs ou le commerce électronique. Modèle MVC : Yii suit le modèle mvc (Model-View-Controller), qui sépare la logique de l'application de la couche de présentation. Cela favorise la maintenabilité du code et améliore la testabilité des applications. Prise en charge ORM : Yii fournit une puissante couche de mappage objet-relationnel (ORM) qui permet aux développeurs de

Présentation de l'espace de noms PHP Présentation de l'espace de noms PHP Aug 20, 2023 am 11:29 AM

Introduction En PHP, l'utilisation d'espaces de noms permet d'utiliser des classes/fonctions/constantes du même nom dans différents contextes sans aucun conflit, encapsulant ainsi ces éléments. Un espace de noms est un regroupement logique de classes/fonctions, etc. en fonction de leur pertinence.

Supprimez les barrières de la gestion de projet avec PHP Git Supprimez les barrières de la gestion de projet avec PHP Git Mar 31, 2024 pm 12:11 PM

Lors de la gestion de projets logiciels volumineux et complexes, les outils de gestion de projet sont essentiels pour simplifier la collaboration, rester organisé et accroître l'efficacité. PHPgit, en tant que système de contrôle de version distribué, peut éliminer efficacement les obstacles dans la gestion de projet grâce à ses fonctions puissantes et ses fonctionnalités flexibles. Éliminez les barrières de communication Les fonctionnalités collaboratives de Git simplifient la communication entre les membres de l'équipe. En utilisant des branches et des demandes de fusion, les équipes peuvent travailler simultanément sur différentes versions de fichiers et suivre clairement les modifications et les conflits. Le processus de révision du code et de feedback devient plus transparent et efficace, réduisant ainsi les malentendus et les erreurs de communication. Organisation améliorée La fonction historique de Git fournit un enregistrement complet des modifications apportées à votre projet. Les membres de l'équipe peuvent facilement consulter l'historique des modifications des fichiers et des branches pour voir qui a apporté des modifications spécifiques.

See all articles