1.io est orienté flux, c'est-à-dire que lors de la lecture des données, elles sont lues à partir du flux une par une, donc les données ne peuvent pas être traitées dans leur ensemble et il n'y a pas de tampon ; nio est orienté tampon ; les données sont stockées dans le tampon. , la lecture des données est effectuée dans le tampon, il est donc plus pratique d'effectuer une opération de décalage des données 2 lorsqu'une ligne est bloquée. S'il n'y a actuellement aucune donnée à lire lorsque le processus exécute io, le thread est bloqué. Puisque nio exécute io sur le canal, il n'est pas bloquant. Lorsqu'il n'y a aucune donnée à lire dans un canal, le canal peut être basculé. traiter d'autres io 3. Nio a un sélecteur parmi lequel choisir. Le sélecteur signifie que le thread peut sélectionner plusieurs canaux via le sélecteur, tandis que io ne peut en gérer qu'un seul
.
Fait purement à la main, j'espère que cela vous aidera
Supposons le scénario suivant : sur une machine à 4 cœurs, recevez les requêtes réseau, traitez la logique métier et renvoyez les résultats du traitement au client. Les requêtes réseau sont de 10 000/s. Pendant le traitement de la logique métier, il y a une opération de. écrire un fichier qui doit être bloqué pendant 5 secondes, en supposant que la transmission ne prend pas de temps.
1. Utiliser le traitement BIO :
En raison du long temps d'E/S dans le traitement de la logique métier, le thread de traitement sera bloqué. Dans le cas de plusieurs requêtes, une requête générera un thread pour traiter l'activité, donc dans les 5 secondes, 50 000 threads doivent exister. le système. , utilisé pour gérer la logique métier. Le processeur utilisera la plupart de ses ressources pour gérer la planification des threads.
2. Utilisez le traitement NIO : Les opérations IO dans NIO sont asynchrones et ne bloqueront pas le thread de logique métier. Dans le cas de plusieurs requêtes, 4 threads métier sont ouverts et un thread occupe un cœur de processeur. peut traiter la logique métier à pleine vitesse. Pour les opérations d'E/S dans l'entreprise, elles peuvent être traitées de manière asynchrone dans le matériel, et les messages sont envoyés au processeur pour un traitement métier ultérieur lorsque les données sont prêtes. À ce stade, seuls quatre threads sont nécessaires pour traiter efficacement l'entreprise, et le traitement est effectué de manière asynchrone. Le processeur n'est presque pas inactif. Il n'est pas nécessaire de consommer des ressources lors de la planification des threads.
1.nio effectue le mappage de la mémoire, éliminant une copie entre l'espace utilisateur et l'espace système 2.nio est une réponse asynchrone, déclenchée, non bloquante, utilisant pleinement les ressources système, principalement c'est le processeur

0zhangzhun132·Tout à l'heure
1.io est orienté flux, c'est-à-dire que lors de la lecture des données, elles sont lues à partir du flux une par une, donc les données ne peuvent pas être traitées dans leur ensemble et il n'y a pas de tampon ; nio est orienté tampon ; les données sont stockées dans le tampon. , la lecture des données est effectuée dans le tampon, il est donc plus pratique d'effectuer une opération de décalage des données
.2 lorsqu'une ligne est bloquée. S'il n'y a actuellement aucune donnée à lire lorsque le processus exécute io, le thread est bloqué. Puisque nio exécute io sur le canal, il n'est pas bloquant. Lorsqu'il n'y a aucune donnée à lire dans un canal, le canal peut être basculé. traiter d'autres io
3. Nio a un sélecteur parmi lequel choisir. Le sélecteur signifie que le thread peut sélectionner plusieurs canaux via le sélecteur, tandis que io ne peut en gérer qu'un seul
Fait purement à la main, j'espère que cela vous aidera
EOF
Supposons le scénario suivant : sur une machine à 4 cœurs, recevez les requêtes réseau, traitez la logique métier et renvoyez les résultats du traitement au client. Les requêtes réseau sont de 10 000/s. Pendant le traitement de la logique métier, il y a une opération de. écrire un fichier qui doit être bloqué pendant 5 secondes, en supposant que la transmission ne prend pas de temps.
1. Utiliser le traitement BIO :
En raison du long temps d'E/S dans le traitement de la logique métier, le thread de traitement sera bloqué. Dans le cas de plusieurs requêtes, une requête générera un thread pour traiter l'activité, donc dans les 5 secondes, 50 000 threads doivent exister. le système. , utilisé pour gérer la logique métier. Le processeur utilisera la plupart de ses ressources pour gérer la planification des threads.
2. Utilisez le traitement NIO :
Les opérations IO dans NIO sont asynchrones et ne bloqueront pas le thread de logique métier. Dans le cas de plusieurs requêtes, 4 threads métier sont ouverts et un thread occupe un cœur de processeur. peut traiter la logique métier à pleine vitesse. Pour les opérations d'E/S dans l'entreprise, elles peuvent être traitées de manière asynchrone dans le matériel, et les messages sont envoyés au processeur pour un traitement métier ultérieur lorsque les données sont prêtes. À ce stade, seuls quatre threads sont nécessaires pour traiter efficacement l'entreprise, et le traitement est effectué de manière asynchrone. Le processeur n'est presque pas inactif. Il n'est pas nécessaire de consommer des ressources lors de la planification des threads.
Qu'il s'agisse d'IO ou de NIO, c'est une manifestation du modèle d'E/S réseau Linux. Il est recommandé d'apprendre le modèle de réseau Linux.
1.nio effectue le mappage de la mémoire, éliminant une copie entre l'espace utilisateur et l'espace système
2.nio est une réponse asynchrone, déclenchée, non bloquante, utilisant pleinement les ressources système, principalement c'est le processeur
<h1>Hé hé</h1>