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

Collection et Stream Java Discussion :

[Executor] Attendre la fin d'un thread


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Inscrit en
    Mai 2002
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2002
    Messages : 328
    Par défaut [Executor] Attendre la fin d'un thread
    Hello,

    Je cherche à faire quelque chose d'assez simple (via l'api java.util.concurrent) : l'idée est de lancer une tache dans un seul thread et de le surveiller afin de le "tuer" si l’exécution de celui-ci dure depuis plus de N millisecondes.

    J'ai essayé plusieurs combinaisons avec Executors, CyclicBarrier, etc... Mais je n'arrive pas à faire ce que je veux. A noter que dans mon code de test, je simule le durée du thread à monitorer avec un Thread.sleep().

    Merci !
    Toine

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Un Thread tout simple peut être arrêté avec un appel à interrupt(), ce qui arrêtera toute action bloquante (comme sleep()) avec un InterruptedException. Cela ne marchera pas si le Thread ne fais jamait d'opération bloquante. Dans ce cas, il doit vérifier de temps en temps avec isInterrupted() s'il ne devrait pas s'arrêter.

    À noter que quand on joue avec les Executor, on peut se tourner vers ExecutorService et leurs méthodes invoke() qui renvoient un Future.

    On peut attendre la complétion de ce Future pendant un certain temps, avec get(). Et ce temps n'a pas suffi, il est possible d'appeler cancel() sur le Future pour qu'il fasse interrupt() sur le Thread concerné.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre éclairé

    Inscrit en
    Mai 2002
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2002
    Messages : 328
    Par défaut
    Merci thelvin,

    Dans mon cas, le thread que je souhaite monitorer effectue un appel sur le réseau.

    Je voudrais que mon code soit le plus fiable possible :

    - j'embarque mon appel réseau dans un thread dédié
    - j’exécute ce thread en indiquant que celui-ci ne doit pas durer plus de N secondes
    - j'attends la fin de l’exécution (fin normale ou timeout)
    - ...

    Toine

  4. #4
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 892
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 892
    Par défaut
    Bonjour

    Je me suis posé une question similaire ici: http://www.developpez.net/forums/d12...read-executor/
    Je pense également qu'un ScheduledThreadPoolExecutor devrait te convenir.

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

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

Discussions similaires

  1. attendre la fin d'un thread
    Par gastoncs dans le forum VB.NET
    Réponses: 1
    Dernier message: 02/03/2012, 18h02
  2. Attendre la fin d'un thread
    Par apmic dans le forum EDT/SwingWorker
    Réponses: 8
    Dernier message: 23/08/2007, 10h04
  3. Attendre la fin d'un thread: Access violation
    Par Booster2ooo dans le forum Delphi
    Réponses: 5
    Dernier message: 15/04/2007, 10h31
  4. [thread]attendre la fin d'un thread?....
    Par babarpapa dans le forum Concurrence et multi-thread
    Réponses: 9
    Dernier message: 29/03/2006, 14h31
  5. [Thread] comment attendre la fin d'un thread?
    Par billynirvana dans le forum Concurrence et multi-thread
    Réponses: 11
    Dernier message: 24/08/2005, 10h43

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