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 :

Péage avec des Threads


Sujet :

Concurrence et multi-thread Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Péage avec des Threads
    Bonsoir,

    Il y a quelques jours, j'avais posé une questions sur la communication entre thread. Un membre m'a expliqué et je l'en remercie.

    J'ai un nouveau problème.

    Je dois réaliser la comunication entre une classe voiture et une classe barrière.

    Chaque objet dispose d'un thread et doit communiquer des informations à l'autre objet.

    Je ne sais pas trop comment réaliser ce système.

    Le formateur a dit qu'il faut que la voiture s'arrête si la barrière est fermée puis signale sa présence à la barrière. Elle va s'ouvrir et dire à la voiture qu'elle peut passer. La voiture se remet en route.

    L'exercice est plus étrange et compliqué que celui exposé dans le post précédent.

    Quelqu'un peut-il m'aider ?

    Je vous remercie.

    AdoOs

  2. #2
    Invité
    Invité(e)
    Par défaut
    J'ai créé deux classes :

    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
     
     
    public class voiture extends Thread
    {
    int x=0; // Position de la voiture
     
    public void avancer ()
    {
    this.x=this.x+1;
    }
     
    public void run() 
    {
    avancer();        
    }
     
    }

    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
     
     
    public class barriere extends Thread
    {
    int x=100; // Position X de la barriere
    int y=100; // Position Y de la barriere
     
    public void ouvrir ()
    {
    this.y=this.y+1;
    }
     
    public void run() 
    {
    ouvrir();
    }
     
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    public class prog
    {
    public static void main (String [] args)
    {
    voiture v = new voiture();
    barriere b = new barriere();
     
    Thread t1 = new Thread(v);
    Thread t2 = new Thread(b);
    }
     
    }
    Les méthodes run et la classe prog ne sont pas complètes car je ne sais pas comment faire.

    Il faut que quand la voiture est devant la barrière, la voiture s'arrête et dise à la barrière : je suis là.

    La barrière va alors lancer son run() et va s'ouvrir. Ensuite, elle dit à la voiture, tu peux passer. La voiture appelle donc run() et avance.

    Quelqu'un peut-il m'aider ?

    AdoOs

  3. #3
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Par défaut
    Dans ton problème, je ne vois pas vraiment en quoi tu as besoin de threads... Est-ce imposé par l'exercice? Parceque sinon, tu peux tout simplement avoir des objets de classe Voiture et Barriere qui répondront à ton problème...
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  4. #4
    Invité
    Invité(e)
    Par défaut
    Le mec qui fait la formation a imposé l'utilisaton de thread dans chaque objet.

    On étudie les threads donc c'est pour çà que c'est imposé.

  5. #5
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Par défaut
    Dans ce cas je pense que tu as un problème de conception.

    Un thread est normalement fait pour touner en permanence, et effectuer des traitements en parallèle.

    La, utiliser la méthode run() d'un thread pour effectuer l'action "ouvrir" de ta barrière, ça n'a pas de sens! Pour faire ça, autant utiliser une classe non threadée.

    A mon avis, le but de ton exercice est pour le thread barrière est de tourner en continu et d'avoir une surveillance périodique de la présence d'une voiture. Dès qu'on en détecte une, on ouvre la barrière, et on la referme dès qu'aucune présence n'est plus détectée.

    Schématiquement voilà ce que tu dois obtenir pour ce thread je pense:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    private boolean voitureDetectee = false;
     
    // méthode de mise à jour de ce flag
     
    public void run() {
       while(true) {
          Thread.sleep(1000); // détection périodique toutes les secondes
          if(voitureDetectee) { ouvrir(); }
          else { fermer(); }
       } 
    }
    Evidemment, c'est simpliste, et le code n'est pas complet... mon but n'est pas de faire l'exercice à ta place Mais part plutôt sur une piste de ce genre... c'est dans ce sens que veut vous pousser celui qui fait la formation je pense
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  6. #6
    Invité
    Invité(e)
    Par défaut
    Je comprends ce que tu viens d'expliquer.

    L'autre problème est le suivant :

    Je lance l'application, la voiture avance en utilisant un thread. Je ne vois pas comment dire à la voiture "stop", la barrière est fermée et dire à la barrière "voitureDetectee".

    En effet, les threads tourne en même temps et pour le moment on n'a vu comment afficher du texte en même temps et un exo avec une caisse mais on ne l'a pas encore corrigé.

    Je suis débutant. Peux-tu m'aider à comprendre le fonctionnement s'il te plait ?

Discussions similaires

  1. Centrer une page avec des DIV imbriqués
    Par emstar dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 25/04/2006, 18h42
  2. Centrer une page avec des frames
    Par Nicos77 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 10/11/2005, 14h07
  3. Centrer une page avec des frames
    Par Nicos77 dans le forum Langage
    Réponses: 11
    Dernier message: 09/11/2005, 16h52
  4. [Threads] Actions continues avec des threads
    Par MiJack dans le forum Concurrence et multi-thread
    Réponses: 6
    Dernier message: 10/10/2005, 17h32
  5. mettre en page avec des div
    Par mathieu_r dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 10/08/2005, 11h35

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