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

Concurrence et multi-thread Java Discussion :

Thread, Interface et Controler


Sujet :

Concurrence et multi-thread Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2005
    Messages
    513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 513
    Par défaut Thread, Interface et Controler
    Bonsoir a tous,
    voila en fait je suis en train de plancher sur un problème de conception auquel je n'arrive pas à trouver de solution. Voila en fait je développe une application qui a une interface principale et j'aimerais que cette interface lance une deuxieme interface mais en parallèle pour que lorsqu'une des deux interfaces soit bloqués cela ne bloque pas l'autre.

    Donc en fait voila comment je procéde: en fait mon interface lance un thread et dans ce thread je lance mon interface, voila le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public class JControler extends Thread
    {
        public void run()
        {  this.productDlg = new JDlgProducteur(); /* reste de la classe control les actions sur les differents composant de la fenetre*/}
    }
    le probleme c'est que ca me lance l'interface mais le thread se termine et donc en fait je me retrouve avec un thread unique. donc si un des deux dialog bloques, alors ca bloque toute mon application.
    et en fait je ne vois pas trop comment résoudre ce problème...

    donc voila si quelqu'un pouvait me conseiller sur la méthode à suivre pour lancer deux interfaces dans deux interfaces thread distinct...

    Ou peut etre que la solution serait de déclarer mon interface comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    class Dlg extends JFrame implements Runable
    { [...] public void run() { ... } [...] }
    et que la mon interface va se lancer dans un thread appart. mais ma gestion des evenement de la fenetre se trouvant dans la classe qui lance le thread, va continuer de faire partie du thread principale.

    donc en fait je ne sais pas trop comment faire, pourriez-vous m'éclairer svp?
    Merci par 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
    Fais attention que toutes les actions GUI doivent intervenir dans le dispatching thread. Pour les actions à toi, tu peux effectivement utiliser les threads que tu veux.

    S'il t'est nécessaire d'avoir des threads précis, tu peux utiliser les outils de java.util.concurrent. Je pense que pour toi le mieux sera Executors.newSingleThreadExecutor.

    Si tu tiens à tout faire toi même, alors il faut penser message : un thread emetteur envoie des messages (un objet quelconque) dans une file (une ArrayList, par ex), tandis qu'un thread consommateur lit, dans une boucle infinie, les messages dans la liste les uns à la suite des autres. Un jeu de synchronized, wait et notify permet de coordonner l'ensemble.

  3. #3
    Membre confirmé Avatar de fomazou
    Inscrit en
    Mars 2004
    Messages
    220
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 220
    Par défaut pb de synchonisation entre threads
    il faut utiliser les fonctions de synchronisation sur les threads , si je ne me trompe il doit y avoir une fonction join() qui permet qu'un thread attende la fin d'un autre avant de s'achever lui aussi

  4. #4
    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
    Pour approfondir, tu pourras trouver un exemple complet d'une mise en oeuvre par messagerie perso à Towards a Timely, Well-Balanced, Event-Driven Architecture.

  5. #5
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2005
    Messages
    513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 513
    Par défaut
    ok je vais donc regarder un peu tout ce que je peux faire.
    je vous remercie et vais donc continuer à chercher un peu.

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

Discussions similaires

  1. thread acces aux controles
    Par clod83 dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 28/10/2009, 17h25
  2. interface de controle
    Par redhat3 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 23/04/2009, 23h05
  3. [Swing]changer l'interface des controles
    Par sovo dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 12/08/2008, 23h27
  4. [Thread] Interface et thread
    Par airod dans le forum Général Python
    Réponses: 16
    Dernier message: 03/01/2007, 12h38
  5. [C#][WindowsForm][Service Win.][2.0]Interface de controle
    Par tomperso dans le forum Windows Forms
    Réponses: 1
    Dernier message: 20/12/2006, 11h05

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