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 :

Planifier une tâche et l'interrompre si elle dure


Sujet :

Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 167
    Par défaut Planifier une tâche et l'interrompre si elle dure
    Bonjour,

    Je souhaite exécuter une tâche toutes les 20 secondes pour mettre à jour certaines données de mon application.

    Pour la planification et le réglage des périodes, j'ai utilisé le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    t = new Timer();
    t.schedule(new Refresh(), 0, 20*1000);
    La classe Refresh hérite de TimerTask et implémente sa méthode run() dans laquelle je fais la mise à jour des données.

    Le problème : Après 20sec Refresh doit se déclencher. Cependant, si la précedente instance de Refresh n'a pas terminé de mettre à jour les données, je ne sais pas comment va se comporter l'application ?

    Dans ce cas de figure, je souhaiterais que l'instance la plus ancienne de Refresh soit détruite même si son traitement n'est pas terminé, et que la nouvelle instance qui vient d'arriver démarre son traitement.
    Comment faire ?

    Merci

  2. #2
    Membre éprouvé
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Par défaut
    Ca dépend comment le timer est planifié. A mon souvenir s'il est planifié tous les 10ms en fixed rate et qu'une fois, il met 40ms a s'exécuter, il va rattraper le retard en exécutant la tâche 4 fois immédiatement sans attendre.

    En revanche, s'il est planifié en fixed delay, il saute les 4 invocations. C'est très mal documenté.

  3. #3
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 540
    Par défaut
    Tu ne peux pas faire deux Threads ? Un qui "attend" pendant 20 secondes et qui créé un 2eme qui lui va mettre à jour, avec un contrôle avant afin de déterminer si la donnée à mettre à jour est la même. Dans ce cas, arrêter le thread précédent avant de lancer le nouveau et si les données ne sont pas les mêmes, 3 threads seront en vie en même temps jusqu'à que ce soit terminé

Discussions similaires

  1. planifier une tâche sur plesk
    Par unix27 dans le forum Hébergement
    Réponses: 4
    Dernier message: 01/12/2011, 00h56
  2. Comment planifier une tâche avec MS SQL SERVER ?
    Par cadabricadabra dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 18/07/2007, 15h40
  3. Planifier une tâche en C# sous Visual2005
    Par Doulyak dans le forum Windows Forms
    Réponses: 4
    Dernier message: 28/05/2007, 16h34
  4. [Debutant]Planifier une tâche
    Par chleuh dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 27/10/2006, 14h03
  5. Planifier une tâche
    Par maxnad dans le forum Langage
    Réponses: 4
    Dernier message: 24/10/2005, 18h01

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