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

Java Discussion :

exécuter un thread pendant une période déterminée


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 167
    Par défaut exécuter un thread pendant une période déterminée
    Bonjour,

    Alors voila j'aimerais exécuter un thread pendant une période déterminée (10 minutes dans mon cas) puis le fermer.

    Ceci me permettrait ainsi de permettre au thread de se fermer s'il devait rencontrer une erreur, un bug qui le bloquerait. En effet, mon thread est normalement censé fonctionner uniquement pendant une courte durée de 2 à 3 minutes.

    J'ai déjà fait des recherches à ce niveau là, j'ai regardé du côté des Timer() et il semblerait que le Timer() puisse gérer cela mais je n'ai pas compris comment l'utiliser si en effet il le peut.

    Merci de m'aider .

    Andréas

  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 Raiden1234 Voir le message
    Alors voila j'aimerais exécuter un thread pendant une période déterminée (10 minutes dans mon cas) puis le fermer.
    Un thread doit se terminer par lui même...

    Citation Envoyé par Raiden1234 Voir le message
    Ceci me permettrait ainsi de permettre au thread de se fermer s'il devait rencontrer une erreur, un bug qui le bloquerait. En effet, mon thread est normalement censé fonctionner uniquement pendant une courte durée de 2 à 3 minutes.
    Quels sont les raisons qui pourrait le bloquer ? Il faut plus d'info sur ton thread

    Citation Envoyé par Raiden1234 Voir le message
    J'ai déjà fait des recherches à ce niveau là, j'ai regardé du côté des Timer() et il semblerait que le Timer() puisse gérer cela mais je n'ai pas compris comment l'utiliser si en effet il le peut.
    Un Timer permet simplement d'exécuter une tâche à intervalle régulier. C'est peut être possible de les utiliser pour cela mais il y a sûrement une meilleure solution... mais il faudrait savoir ce que fait ton thread

    a++

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 167
    Par défaut
    En fait mon thread va exécuter un programme exécutable (iMacro) qui va en gros scanner un site internet. Le thread va ensuite fermer le programme lorsqu'il aura fini de scanner le site internet et se terminer lui-même.

    Cependant il peut s'avérer dans certains cas, que le programme iMacro plante (erreur windows où l'on peut envoyer un rapport..) ainsi mon thread n'atteint jamais un état déterminé connu qui peut être le succès (iMacro a finit) ou un echec (iMacro renvoie un erreur car une de ses commandes a échouée).

    Mon thread va toujours être en fonctionnement normal sans se rendre compte que le programme iMacro n'arrive plus à progresser. C'est un plantage trop sérieux pour que iMacro lui même puisse renvoyer un état "échec" connu à mon thread.

    Cette situation arrive rarement mais il faut néanmoins que je la gère, c'est pour cela que je dois fixer un durée limite pour l'exécution de mon thread, pour qu'il puisse continuer avec un autre site (mon thread doit en effet traiter ainsi une liste de sites internet un par un).

    Voila, si certains aspects ne sont pas clairs, dites-le moi et j'essaierais de reformuler mon explication .

  4. #4
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 099
    Par défaut
    Citation Envoyé par Raiden1234 Voir le message
    Cette situation arrive rarement mais il faut néanmoins que je la gère, c'est pour cela que je dois fixer un durée limite pour l'exécution de mon thread, pour qu'il puisse continuer avec un autre site (mon thread doit en effet traiter ainsi une liste de sites internet un par un).
    Et si ton iMacro mets enormement plus de tempsque ton TIMER (site plus gros qu'un autre) et qu'en fait il ne plante pas mais depasse le timer, tu vas considerer que ca a raté ?! Ou pire attendre 20 minutes alors que le truc a planté depuis 20 minutes ?!

    Si tu utilisais un autre programme que "iMacro" genre un en console, qui pourrait te renvoyer un code d'erreur sans te caller par une boite de dialogue (a ce que je comprends dans ton cas).
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 167
    Par défaut
    L'utilisation d'iMacro est obligatoire. Je n'ai vraiment pas le choix à ce niveau là.

    L'erreur que j'aimerais traiter est une erreur windows. Sachant que je suis dans l'obligation d'utiliser le programme "iMacro", je ne vois pas d'autres alternative que de jouer sur le temps.

    C'est un programme qui est fait pour tourner toute une nuit, je n'en suis donc pas à 20 minutes prêt.

    Un site ne peut pas durer plus de 10 minutes tout en restant dans un état de "bon" fonctionnement. iMacro gère un timeout pour traiter les ralentissements éventuels du site (60 secondes). Dans tous les autres cas d'erreur que celui que j'aimerais traiter, iMacro pourra renvoyer un code d'erreur lié au timeout.

    Cette erreur windows est si persistente qu'elle empèche iMacro de la traiter à travers son timeout.

    Donc en gros, sans vouloir compliquer les choses car ce n'est pas l'objet de mon sujet, si une inactivité (pas de réponses données à mon programme) est supérieure à 60 secondes, alors je me trouve dans l'erreur windows. Et c'et à mon thread de traiter cette inactivité.

  6. #6
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 167
    Par défaut
    Personne ne sait??

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

Discussions similaires

  1. Déclencher action pendant une période donnée
    Par Detoussay dans le forum Langage
    Réponses: 15
    Dernier message: 03/01/2014, 09h04
  2. exécuter un thread pour une durée donnée
    Par selmani300 dans le forum C
    Réponses: 6
    Dernier message: 28/04/2009, 13h44
  3. sélectionner des évènement que pendant une période temps donnée
    Par jenniferIUP dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 17/02/2009, 14h05
  4. Executer du code pendant une durée déterminé
    Par vladimire dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 21/12/2008, 11h32
  5. Réponses: 9
    Dernier message: 24/08/2007, 12h37

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