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 :

Timer et TimerTask Java


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2010
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 15
    Par défaut Timer et TimerTask Java
    Bonsoir,

    Je suis en train de développer une application java qui se base sur l'exécution périodique de plusieurs méthodes en parallèle.
    J'ai programmé ces tâches en utilisant les classes Timer et TimerTask. Au niveau de la méthode main(), j'ai lancé tous les Timer.
    Dans la méthode run() de chaque Timer j'ai besoin d'incrémenter un compteur à chaque exécution de la tâche répétitif, mais parfois la valeur du compteur reste inchangée

    Pouvez vous m'indiquer comment remédier à ce problème ?

    Merci d'avance pour votre aide.

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Montrez votre code pour l'incrémentation du compteur et la création des timers.

  3. #3
    Membre averti
    Inscrit en
    Octobre 2010
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 15
    Par défaut
    Bonjour,
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    public class TimerClass1 {
     
    	Timer timer;
    	int i = 0;
     
        public TimerClass1 (int milliseconds) {
            timer = new Timer();
            timer.scheduleAtFixedRate(new PeriodicTask(),0, milliseconds*1000);
         }
          class PeriodicTask extends TimerTask {
     
             public void run() {
     
       		   		 i=i+1;
     
                                    // créer une instance de thread
                                       Tr = new tache(i);
                                       Tr.start();
     
                                        try {
    					    Tr.join();
    				          } catch (InterruptedException e) 
                                                   {
    						e.printStackTrace();
    						}   
                                      }
            }
    }
    Même code pour TimerClass2 sauf modification de la tâche à exécuter et de la valeur initial du compteur (i= 100).
    Le rôle des tâches est la mise à jour périodique de données dans une base de données.

    class main

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public static void main(String[] args) {
     
           new TimerClass1 (8);
           new TimerClass2 (6);
    }

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Remplacez le champ



    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AtomicInteger i = new AtomicInteger(0);
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
       		   		 i=i+1;
     
                                    // créer une instance de thread
                                       Tr = new tache(i);
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
       		   		 int count = i.incrementAndGet();
     
                                    // créer une instance de thread
                                       Tr = new tache(count);

Discussions similaires

  1. Timer et TimerTask
    Par bza88 dans le forum Général Java
    Réponses: 2
    Dernier message: 03/10/2013, 18h08
  2. Timer et TimerTask
    Par bza88 dans le forum Général Java
    Réponses: 2
    Dernier message: 02/10/2013, 13h49
  3. Reschedule timer et timerTask
    Par Shivan dans le forum Général Java
    Réponses: 0
    Dernier message: 12/06/2009, 14h51
  4. TimerTask et Timer
    Par daninho dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 14/04/2007, 15h56
  5. Liaison entre Timer et TimerTask
    Par Tsuna78 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 24/03/2007, 13h19

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