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 :

Arrêter un thread et le lancer a une heures precise


Sujet :

Java

  1. #1
    Membre habitué Avatar de aelmalki
    Inscrit en
    Mars 2009
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 250
    Points : 125
    Points
    125
    Par défaut Arrêter un thread et le lancer a une heures precise
    Bonjour,

    Je voudrais savoir sir un Thread héritant de la classe TimerTask peut être suspendu et relancer a une heure précise => par exemple le suspendre et le relancer a 06h00 du matin ?

    Est ce que vous pouvez m'aider SVP ?

    Merci infiniment.

  2. #2
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    C'est possible, à partir d'un Thread principal de contrôle...

    La librairie Quartz offre des APIs plus poussées que le JDK pour le contrôle temporel d'exécution.

    Cependant, attention à ce que fait ton thread et à ce que cette suspension soit correctement gérée.
    Imaginons que ton Thread écrive dans une base de données. Si tu n'y prends pas garde, après la suspension, la connexion va tomber en timeout et être fermée par le serveur. Au moment du réveil du thread, sa connexion ne sera donc plus valide et il ne pourra poursuivre son traitement sans la réouvrir...

  3. #3
    Membre habitué Avatar de aelmalki
    Inscrit en
    Mars 2009
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 250
    Points : 125
    Points
    125
    Par défaut
    Merci beaucoup pour votre retour,

    Mise à part cette solution, est ce que vous pensez que le faite de tester sur une variable boolean dans une boucle pourra être une solution (j'ai lu dans des articles que ce mécanisme a remplacer l'utilisation des méthode suspend() et resume() de la classe Thread dans JDK1.1)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    boolean testSiDeuxH = false;
     
    while(!testSiDeuxH){
     Thread.sleep(600000);
      if(dateHeureDeuxH.equal(new Date()){
         testSiDeuxH = true;
         break;
      }
    }
    Est ce que a votre avis ce genre de traitement présente des inconvenants ?

    Merci infiniment.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 88
    Points : 72
    Points
    72
    Par défaut Attention !
    Alors juste une petite coquille : c'est 60000, pas 600000 pour tester pour une minute.

    Sinon, pour ne pas avoir de problème en cas de multithread, éviter d'avoir des variables temporaires autant que nécessaire.

    Dans ton cas, ça donnerait quelque chose dans ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Date heureH = new GregorianCalendar(2010,04,08,06,00).getTime();
    while(!heureH.equals(new Date())){
      try{
        Thread.sleep(60000);
      }
      catch(InterruptedException ex){
        // TODO: Sortie du programme, problème rencontré,...
      }
    }
    // TODO: Code à exécuter à l'heure H
    (Je n'ai pas testé le code, c'est possible qu'il reste des erreurs)

  5. #5
    Membre habitué Avatar de aelmalki
    Inscrit en
    Mars 2009
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 250
    Points : 125
    Points
    125
    Par défaut
    Merci beaucoup pour la correction.

    Bonne journée.

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

Discussions similaires

  1. Réponses: 16
    Dernier message: 23/10/2012, 19h28
  2. Réponses: 2
    Dernier message: 25/08/2008, 14h17
  3. Comment faire fonctionner une macro à une heure precise
    Par dreloman dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 29/06/2008, 00h46
  4. Exécuter commande a une heure précise
    Par lastrecrue dans le forum Autres Logiciels
    Réponses: 5
    Dernier message: 01/09/2006, 01h27
  5. Réponses: 7
    Dernier message: 01/02/2006, 18h50

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