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 :

[Timer] je Comprend pas ..


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut [Timer] je Comprend pas ..
    Bonjour,

    Je voudrais pouvoir exéceuter des tâches planifiées.
    Je suis tombé sur Timer et sheduleAtFixedRate() mais mon TimerTask ne s'effectue qu'une seule fois..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    public class Scheduler{
     
       public Scheduler(){
     
           Timer timer = new Timer("monTimer",true);
           TimerTask task = new TimerTask() {
               public void run() {
                   System.out.println("Execution de l'action du Timer");
     
               }
           };
           task.
           timer.scheduleAtFixedRate(task,new Date(),100);
     
       }
    Le résultat dans ma console est :
    run:
    Execution de l'action du Timer
    BUILD SUCCESSFUL (total time: 0 seconds)
    Je suppose que mon action doit se répeter sans cesse mais elle ne s'exécute qu'une seule fois.
    Surement parceque mon application s'arrête.
    Mais alors je dois mettre mon application dans un autre thread ?

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    509
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 509
    Par défaut
    En lisant ceci :
    ftp://ftp-developpez.com/grisha/javasched.pdf
    je me suis apperçu que peut etre ton erreur provenait de ta façon de construire ton Timer .
    En regardant la doc :
    http://java.sun.com/j2se/1.4.2/docs/api/java/util/Timer.html

    j'etais un peu perdu car le constructeur que tu utilise n'est pas dans le JDK1.4.2
    probablement que tu utilise une autre versions (j'ai pas regarder pour la 5) enfin bref , on peut tout de meme voir qu'il y a un contructeur qui prend un boolean isDeamon en parametre , qui a priori declare ton timer en deamon qui va donc s'arreté lorsque ton programme principale va s'arreté , je te propose donc d'essayé de construire ton timer de la façon suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Timer timer = new Timer("monTimer",false);
    Ceci dit j'ai jamais utiliser ces classes, je pretend pas qu'il s'agit de LA solution mais ma proposition n'est pas tres longue a mettre en place alors pourquoi ne pas essayer

    Tiens nous au courant

  3. #3
    Invité
    Invité(e)
    Par défaut
    Tu as raison, le timer mis en demon s'arrête avec l'applic.
    En mettant mon applic dans un thread le timer fonctionne bien, mon message apparait toutes les secondes.
    C'est tout à fait logique d'ailleurs. Si l'applic ne tourne plus, il n'y à pas de raisons que le timer continue à faire ces actions..

    Par contre je ne vois la différence
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Timer timer = new Timer("monTimer",false);
    //ou
    Timer timer = new Timer("monTimer",true);

  4. #4
    Membre Expert
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Par défaut
    Le contructeur Timer(boolean) permet de préciser si le thread créé est de type daemon.

    Un thread de type daemon tourne en arrière-plan de son thread parent et il cesse d'exister automatique dès que son parent termine.

    Tandis qu'un thread "non démon" continue à vivre même si son parent est terminé.

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    509
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 509
    Par défaut
    En gros si tu mets "false" dans le constructeur , tu n'as plus besoins de la mettre dans un thread il tourneras tout seul comme un grand que l'appli s'arrete ou non !!

    Enfin il me semble

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par FreshVic
    En gros si tu mets "false" dans le constructeur , tu n'as plus besoins de la mettre dans un thread il tourneras tout seul comme un grand que l'appli s'arrete ou non !!
    Merci c'est aussi ce que je pensais mais ça n'a pas l'air de fonctionner..

Discussions similaires

  1. [thread][methodologie]Quelque chose que je ne comprends pas!
    Par norkius dans le forum Général Java
    Réponses: 5
    Dernier message: 16/03/2005, 14h01
  2. Mon timer n'est pas prioritaire !!
    Par Hectorz dans le forum MFC
    Réponses: 9
    Dernier message: 09/02/2005, 12h57
  3. sql ne comprend pas mon where!et me demande des parametres
    Par marie10 dans le forum Langage SQL
    Réponses: 10
    Dernier message: 20/04/2004, 11h08
  4. [Rave] un message que je ne comprends pas
    Par Clotilde dans le forum Rave
    Réponses: 2
    Dernier message: 30/09/2003, 21h46

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