IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Question sur NIO


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2010
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 22
    Par défaut Question sur NIO
    Bonjour,

    J'ai une simple question sur Java NIO.

    Si je comprends bien, l'objectif (entre autres) est de remplacer la technique "1 thread par client" de java.io par une technique réactive qui exécute du code à chaque fois qu'une requête arrive. Jusque là j'arrive à comprendre l'économie de mémoire et de CPU mais que se passe-t-il si une requête prend du temps à s'exécuter ?

    Mettons qu'un client lance un calcul qui prend 10 secondes. Le serveur est bloqué pendant 10 secondes et passera à la requête suivante quand il aura fini ?

    Je sais que c'est une question de noob mais je suis un noob. :-)
    Merci de votre aide.

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Citation Envoyé par Koudou Voir le message
    Mettons qu'un client lance un calcul qui prend 10 secondes. Le serveur est bloqué pendant 10 secondes et passera à la requête suivante quand il aura fini ?
    Oui !

    Mais l'idée c'est de traiter rapidement les "traitements" rapide.
    Si tu dois avoir des traitements long il vaut mieux passer par un thread pour gérer cela...
    Mais tu pourras traiter les opérations courtes directement.



    a++

  3. #3
    Membre averti
    Inscrit en
    Juillet 2010
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 22
    Par défaut
    Ok. La technique 1 client 1 thread me convient mieux alors dans ce cas.

    Merci pour la réponse.

  4. #4
    Membre Expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Par défaut
    Oui mais c'est pas pareil, ça consomme beaucoup beaucoup plus de resources...

    La technique qu'il te faudrait, c'est 1 thread pour nio, et n threads pour les traitements longs. le thread nio, quand il remarque que le traitement sera trop long pour lui, empile les tâches dans une file d'attente et les autres threads s'occupent de faire le boulot.

    1 thread par client ça implique que le nombre de clients est (vite) limité. Avec nio, tu peux facilement augmenter ce nombre à plusieurs miliers de connexions simultanées... à toi de voir ce qui est le mieux pour ton besoin

Discussions similaires

  1. [debutant] Questions sur 1 futur projet
    Par cyrull22 dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 28/04/2003, 22h49
  2. Quelques questions sur le TWebBrowser...
    Par CorO dans le forum Web & réseau
    Réponses: 3
    Dernier message: 17/01/2003, 22h23
  3. Question sur les handles et les couleurs...
    Par MrDuChnok dans le forum C++Builder
    Réponses: 7
    Dernier message: 29/10/2002, 09h45
  4. Réponses: 2
    Dernier message: 11/08/2002, 22h27
  5. question sur les message box !
    Par krown dans le forum Langage
    Réponses: 7
    Dernier message: 02/08/2002, 17h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo