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 :

[Stratégie] Gestion d'un timeout en environnement mono-thread


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    31
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 31
    Par défaut [Stratégie] Gestion d'un timeout en environnement mono-thread
    Bonjour,

    Je cherche à mettre en place un système de timeout pour un système de simulation de réseaux P2P dans lequel les différents pairs communiquent par envoi de message.
    Le timeout est pour l'envoi d'un message : si pas de réponse, réémission du message, puis si 2ème timeout, annulation de la communication. J'ai trouvé des exemples qui utilisent des threads pour gérer ça, mais dans mon cas je ne peux pas utiliser de threads (c'est une simulation).
    Il faut aussi préciser que j'ai ma propre base de temps (une fonction qui s'execute périodiquement, gérée par le simulateur).
    Pour le moment j'ai créé un timer, dont la valeur est décrémentée à chaque unité de temps, et lorsqu'elle atteint 0, on exécute une methode qu'on a passée en paramètre à la création. Cette méthode fait toujours la même chose : renvoyer le message puis armer un deuxième timer.
    Mon problème vient de ce dernier point : en effet, je gère au niveau de mon application une liste de timers, que je parcours à chaque unité de temps pour décrémenter tous les timers, et lancer la méthode dont je parlais précédemment lorsqu'un timer atteint 0. Or comme cette méthode modifie la liste (elle ajoute le 2ème timer), j'obtiens tout naturellement une belle ConcurrentModificationException.

    La question (enfin !) est donc : comment dois-je m'y prendre (je pense que ce système doit être mal conçu, mais je ne vois pas comment faire autrement ) pour éviter cette exception ?

    Merci d'avance.

  2. #2
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    Il te faut une liste intermédiaire, et procéder en deux temps :
    1. Pour toute la liste tu décrémentes ; ceux qui sont arrivés à zéro, tu lances la méthode, et tu les mémorises dans ta liste intermédiaire
    2. Pour toute la liste intermédiaire tu relances le timer.

    ... et tu recommences, sans oublier une raz de la liste intermédiaire au passage.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    31
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 31
    Par défaut
    Ok, merci. J'avais déjà pensé à une solution de ce type, mais je me demandais s'il n'y avait pas de meilleure façon de concevoir toute l'architecture. Peut être qu'en fin de compte non puisque apparemment personne n'a de meilleure idée...
    Merci pour ton aide.

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

Discussions similaires

  1. [1.x] [1.0.12]Gestion des dates dans un environnement international
    Par pmithrandir dans le forum Symfony
    Réponses: 1
    Dernier message: 16/10/2009, 11h20
  2. [EJB] [Stratégie] Gestion des exceptions
    Par nelob dans le forum Java EE
    Réponses: 0
    Dernier message: 15/05/2009, 15h40
  3. [Stratégie] Gestion de la concurrence d'accès
    Par viddak dans le forum Développement Web en Java
    Réponses: 1
    Dernier message: 22/10/2008, 12h49
  4. Gestion des fenetres dans un environnement MDI
    Par jcb47 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 16/06/2008, 12h31
  5. [Stratégie] Gestion du veuillez patienter
    Par tnodev dans le forum Développement Web en Java
    Réponses: 6
    Dernier message: 29/10/2007, 10h22

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