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

Interfaces Graphiques en Java Discussion :

communication entre thread (wait notify repaint)


Sujet :

Interfaces Graphiques en Java

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2011
    Messages : 8
    Points : 6
    Points
    6
    Par défaut communication entre thread (wait notify repaint)
    Bonjour,

    je travaille sur un projet pour lequel je rencontre un problème sur un point précis: la communication entre les threads dans la cadre de l'animation d'un composant graphique.

    Pour résumer mon problème, imaginons une application qui dessine deux rectangles de couleurs différentes et deux boutons pour activer le déplacement de ces rectangles (déplacement quelconque de 1 unité par 1 unité pendant une durée de 100 unités = mouvement de glissement du rectangle vers la gauche par exemple). Si je clique sur le bouton R alors le rectangle de couleur R se déplace successivement de 100 unités, et même chose pour le bouton C qui agit lui sur le rectangle de couleur C. Mes deux rectangles sont issus de classes différentes (titi et toto) car dans mon projet je dois gérer le déplacement d'objets de nature différente (image, rectangle, cercles, etc.).
    J'ai donc deux threads différents pour lesquels j'ai redéfinit la méthode run en incluant un for et un appel à repaint() pour chaque i de la boucle. Cela marche bien mais si je clique rapidement successivment sur les deux boutons alors les rectangles ce déplacent en même temps.

    Il m'est demandé de faire dialoguer les deux threads directements afin d'éviter de lancer le deuxième avant que le premier ce soit terminé. J'ai trouvé différentes solutions passant par une variable Boolean, une MessageQueue ... mais je dois utiliser les fonctions wait() et notify() pour réaliser ce projet.
    => Je bloque sur ce point depuis une dizaine de jours, est-ce que quelqu'un aurait une idée, une doc, ...

    je peux fournir un exemple de code Java qui formalise mon problème.

    par avance merci,

    jojo

  2. #2
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Vu que les threads ne sont pas censés s'exécuter en parallèle, autant n'en avoir qu'un seul, auquel on poste des ordres dans une File. Cet unique Thread sera de type daemon (tournera en permanence) et se réveille pour effectuer des actions toutes les n millisecondes et appelant la méthode repaint.
    Dans la file on poster des actions a réaliser. Ces actions doivent être fonctions du temps (vu que le Thread est activé toute les millisecondes) et savoir où ils doivent être dessinés par rapport au moment où leur animation a commencé, et connaître leur durée d'animation.

    Le thread, lui va dépiler un objet , et à chaque tour de boucle recalculer où cet objet doit se trouver en fonction du temps (in fine cela permet d'avoir des accélérations/décélérations dans l'animation).

    Bon ça c'est la version complexe
    La version simple va simplement dire que tel objet doit aller de tel à tel endroit, et tu déplace ton objet de x unités à chaque intervalle de temps.

Discussions similaires

  1. [C#] Communication entre thread
    Par kekesilo dans le forum Windows Forms
    Réponses: 11
    Dernier message: 17/09/2007, 19h48
  2. [thread] communication entre threads
    Par untipy dans le forum Concurrence et multi-thread
    Réponses: 11
    Dernier message: 30/08/2007, 15h47
  3. Problème de communications entre threads
    Par maya09 dans le forum Windows
    Réponses: 1
    Dernier message: 22/02/2006, 22h18
  4. Communication entre thread
    Par JFPS Soft dans le forum Concurrence et multi-thread
    Réponses: 2
    Dernier message: 03/02/2006, 17h38
  5. [c#][threading] communication entre threads
    Par orelero dans le forum C#
    Réponses: 6
    Dernier message: 02/01/2006, 00h42

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