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

API standards et tierces Java Discussion :

Délai du premier event : javax.swing.Timer


Sujet :

API standards et tierces Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 23
    Par défaut Délai du premier event : javax.swing.Timer
    Bonsoir à tous,

    J'écris actuellement un serveur qui fait tourner un moteur synchronisé avec ses clients à l'aide de Timer Swing.

    Le problème est que lorsque j'effectue un start sur l'un de ces timer, celui-ci peut mettre de 1 à 300 ms pour lancer le premier event ! (Autrement dit, il est très dangereux)
    J'ai pourtant bien fait un setInitialDelay(0) juste avant le start...

    Le bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    timer.setInitialDelay(0);
    timer.setDelay(250);
    timer.start();
    Informations complémentaires :
    Je tourne sous Windows 7 et j'ai forcé la précision de l'horloge de Windows à 1ms (pour obtenir une précision du timer Swing de 1ms) à l'aide d'un démon infini.

    Si vous avez une idée du pourquoi du comment, je vous remercie d'avance pour votre aide.

    Cordialement,
    Birmania

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 095
    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 095
    Par défaut
    Citation Envoyé par Birmania Voir le message
    Je tourne sous Windows 7 et j'ai forcé la précision de l'horloge de Windows à 1ms (pour obtenir une précision du timer Swing de 1ms) à l'aide d'un démon infini.
    Comment as tu fait cela ?

    D'un autre coté, pourquoi avoir utilisé un timer swing pour une application de commande d'un moteur ?? (plutot que java.util.timer ou mieux)
    (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

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 23
    Par défaut
    Citation Envoyé par wax78 Voir le message
    Comment as tu fait cela ?
    J'ai crée un démon qui tourne en permanence à une très basse fréquence pour forcer la fréquence de l'horloge.

    Tu peux retrouver le problème et la solution ici :
    https://forums.oracle.com/forums/thr...readID=2344373

    Citation Envoyé par wax78 Voir le message
    D'un autre coté, pourquoi avoir utilisé un timer swing pour une application de commande d'un moteur ?? (plutot que java.util.timer ou mieux)
    C'était le seul mécanisme de scheduler que je connaissais jusque là (et qui semblait bien marché sur des délais relativement important).
    Je viens de changer mon code pour utiliser un ScheduledExecutorService. (http://docs.oracle.com/javase/1.5.0/...orService.html)

    Son avantage est qu'il s’exécute dans un thread séparé mais du coup il faut gérer un peu plus de synchronisation.
    J'ai fait quelques tests et il se trouve plus précis que le Timer Swing (démarre au bon moment et précisions des délais accrues).
    En revanche, j'ai quelque fois 20/30 millisecondes en trop sur le tout premier délai (pas le délai initial mais le premier délai inter-événement).

Discussions similaires

  1. Utilisation de "javax.swing.Timer"
    Par Alba.1337 dans le forum Langage
    Réponses: 10
    Dernier message: 04/12/2011, 17h39
  2. Chronomètre simple utilisant un javax.swing.Timer
    Par Johann.Heymes dans le forum Codes sources à télécharger
    Réponses: 0
    Dernier message: 08/03/2011, 19h09
  3. Réponses: 2
    Dernier message: 30/04/2008, 14h40
  4. [javax.swing.Timer] Arrêter mon Timer
    Par GLDavid dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 17/01/2006, 15h26
  5. [Swing]Timer
    Par micanti dans le forum Composants
    Réponses: 4
    Dernier message: 04/11/2005, 06h58

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