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

Servlets/JSP Java Discussion :

problème de Thread qui bloque ma Servlet


Sujet :

Servlets/JSP Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 85
    Points : 55
    Points
    55
    Par défaut problème de Thread qui bloque ma Servlet
    Bonjour tout le monde,

    je souhaite optimiser mon application afin que ma servlet retourne le résultat voulu à l'utilisateur et lance les autres taches non prioritaires en Threads en taches de fond (comme par exemple incrémenter le nombre de visite d'un user).

    Je l'ai fait avec une class qui implemente Runnable lancé par la servlet mais ça ne marche pas
    Je fais un point d'arrêt sous eclipse sur la méthode run() mais la servlet bloque tant que run() n'a pas terminé son travail !!

    Une idée pour quoi ça bloque ? une autre pour comment lancer mes taches en asynchrone ?

    Merci d'avance

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 130
    Points : 115
    Points
    115
    Par défaut
    Tu la lances comment depuis ta servlet ?

    M'est avis que tu dois lancer directement run(), c'est pour ça que ça bloque.
    Essaie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    (new Thread(tonObjetRunnable)).start();

    => ce tuto là est pas mal: http://alwin.developpez.com/tutorial/JavaThread/

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 85
    Points : 55
    Points
    55
    Par défaut
    Je la lance :

    AsyncUserService a = new AsyncUserService(session.getUserBean());
    Thread t = new Thread(a);
    t.run();

    sachant que AsyncUserService implémente Runnable...

    Bon je test ta méthode et je reviens
    Merci pour ta réponse

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 130
    Points : 115
    Points
    115
    Par défaut
    bon ben c'est ça l'erreur.
    En appelant run() directement, tu ne crées pas un nouveau thread, tu restes dans ton thread courant (que ton objet implémente Runnable ou pas ne change rien).
    Si tu n'appelles pas start(), cela ne marchera pas.

    Je te conseille de faire un tour sur le tuto que je t'ai filé pour te rafraîchir la mémoire sur les threads.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 85
    Points : 55
    Points
    55
    Par défaut
    Merci Reeter ! ça marche à merveille
    il me reste juste des probs d'accès concurrent et le tour est joué

    Citation Envoyé par Reeter Voir le message
    Tu la lances comment depuis ta servlet ?

    M'est avis que tu dois lancer directement run(), c'est pour ça que ça bloque.
    Essaie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    (new Thread(tonObjetRunnable)).start();

    => ce tuto là est pas mal: http://alwin.developpez.com/tutorial/JavaThread/

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de readLine() qui bloque mon application
    Par critok dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 15/08/2012, 21h20
  2. [Débutant] Thread qui bloque l'affichage de la form
    Par Shorty369 dans le forum C#
    Réponses: 8
    Dernier message: 27/03/2012, 18h03
  3. [QThread] Main thread qui bloque un autre thread
    Par Amnell dans le forum Multithreading
    Réponses: 6
    Dernier message: 25/02/2010, 15h38
  4. Arreter un thread qui "bloque" sur un socket
    Par J-F dans le forum Concurrence et multi-thread
    Réponses: 2
    Dernier message: 12/12/2006, 00h04
  5. Problème de Thread qui prend trop de mémoire
    Par petozak dans le forum Général Java
    Réponses: 20
    Dernier message: 11/12/2006, 15h24

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