[ALG3 Java] Run vide ThreadListener (P1 ni bataille)

Voir le sujet précédent Voir le sujet suivant Aller en bas

resolu [ALG3 Java] Run vide ThreadListener (P1 ni bataille)

Message  jonas le Jeu 16 Aoû 2012, 21:32

Bonjour,
Dans le cadre du projet "ni bataille, ni manie" il faut compléter une application dont la Classe ThreadListener de MainServer.java

Le code fourni est le suivant:

Code:
  /**
    * Thread listener, écoute le modèle et informera le client dont il
    * s'occupe. Ce thread n'utilise que "out" tandis que ThreadClient utilise
    * "in"
    */
    private class ThreadListener extends Thread
            implements Observer {
        private ObjectOutputStream out;
        private int id;
        private StateDTO state;

        public ThreadListener(ObjectOutputStream out, int id) {
            setDaemon(true);
            this.id = id;
            this.out = out;
            this.state = new StateDTO();
        }

        @Override
        public void run() {           
            synchronized (model) {
                model.addObserver(this);
            }
        }

        /**
        * Je suis à l'écoute du modèle serveur (via le model.addObserver(this)
        * ci-dessus). Chaque fois qu'il m'informe, je dois envoyer l'info qui
        * va bien dans le socket ...
        *
        * L'info qui va bien est générée par inrrogation du modèle et crée soit
        * une chaine soit un StateDTO que j'envoie à <b>mon</b> client.
        *
        * @param observable le modèle du serveur
        * @param arg un argument, probablement une chaine
        */
        public void update(Object observable, Object arg) {
            throw new UnsupportedOperationException("Not yet implemented");
           
        }
    }

Il me semble que tel quel, le thread va se terminer tout de suite car il n'y a pas de boucle dans la méthode run.

En réalité, ce thread n'a besoin de réagir que lorsqu'un observé appel la méthode update de ce thread observateur.

Du coup que dois-je mettre dans la méthode run pour que
* le thread ne se ferme pas, (sans while ça semble pas fonctionner)
* qu'il ne consomme pas inutilement du cpu, (while(!interupted){yield} pas top et déconseillé par l'IDE)
et
* qu'il reste réactif si on appelle la méthode update (while(sleep(xxx) pas top et déconseillé par l'IDE)

Merci d'avance pour vos suggestions...


Dernière édition par jonas le Mar 28 Aoû 2012, 14:53, édité 2 fois

jonas

Nombre de messages : 234
Prénom : Jonathan
Statut : Ancien industrialisé
Localisation : Devant son clavier BÉPO !
Date d'inscription : 29/09/2008

http://www.xax.be

Revenir en haut Aller en bas

resolu Re: [ALG3 Java] Run vide ThreadListener (P1 ni bataille)

Message  iCart le Ven 17 Aoû 2012, 08:16

jonas a écrit:En réalité, ce thread ne réagit que lorsque un observé appel la méthode update de ce thread observateur.
N'est-ce pas le résultat voulu? Pourquoi s'inscrire en tant qu'observateur du modèle, sinon?

... ma mémoire sur le sujet n'est plus aussi fraîche que sur le moment, mais j'ai eu ce projet cette année et j'ai toujours le code source : cette méthode run() ne contient (quasiment) que le addObserver(this) et pas de boucle...

iCart

Nombre de messages : 58
Age : 27
Prénom : Sylvain
Statut : Echappé 2013
Date d'inscription : 09/12/2009

Revenir en haut Aller en bas

resolu Re: [ALG3 Java] Run vide ThreadListener (P1 ni bataille)

Message  jonas le Ven 17 Aoû 2012, 10:03

Ah ? Autant pour moi !
Il me semblait que dès qu'on arrivait au bout de la méthode run le thread se fermait...

merci

jonas

Nombre de messages : 234
Prénom : Jonathan
Statut : Ancien industrialisé
Localisation : Devant son clavier BÉPO !
Date d'inscription : 29/09/2008

http://www.xax.be

Revenir en haut Aller en bas

resolu Re: [ALG3 Java] Run vide ThreadListener (P1 ni bataille)

Message  Contenu sponsorisé Aujourd'hui à 01:12


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum