Retourner aux forums || Retourner au forum Programmation.java
Programmation.java : Mettre un objet "end of stream" dans une queue paramétrée
Posté par gc (page perso, ) le 25 juin 2007Pour illustrer :
- j'ai une classe "public class Consommateur<T>"
- dedans j'ai une "private BlockingQueue<T> queue"
- pour produire, j'appelle "addElement(T)" qui rajoute dans la queue
- pour consommer, le consommateur bouffe des T aussi bien sûr
- et pour terminer, je souhaite faire addElement(EndOfStream) mais je n'arrive pas à "écrire" la classe EndOfStream puisque je ne peux ni hériter ni implémenter T
Une idée ?
[1] http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent(...)
> Lire le message (5 commentaires, moyenne: 1).
Encapsulation du T dans une classe "Message"
remplace la "private BlockingQueue queue" par une "private BlockingQueue< Message >", ou Message contient un reference vers un T, qui peut etre null pour signifier le EndOfStream (ou un flag, ou autre...).
Les consommateurs recoivent des Message, ils accedent a la valeur via un accesseur (toujours pas de cast).
Petite remarque en passant : les EndOfStream c'est bien quand tu connais le nombre de consommateurs a arreter (je ne sais pas si c'est dans la doc, je ne l'ai pas lue...)
-
[^]Re: Encapsulation du T dans une classe "Message"
Posté par shbrol () le 25/06/2007 à 11:29. (lien). Évalué à 1.Rhaaaaa, me suis fait manger les chevrons... Il faut lire:
remplace la "private BlockingQueue<T > queue" par une "private BlockingQueue< Message<T> >"-
[^]Re: Encapsulation du T dans une classe "Message"
Posté par gc (page perso, ) le 25/06/2007 à 12:19. (lien). Évalué à 1.pourquoi pas.. mais ca m'ennuie de provoquer cette indirection supplementaire pour produire et consommer :/
-
[^]Re: Encapsulation du T dans une classe "Message"
Posté par shbrol () le 25/06/2007 à 12:46. (lien). Évalué à 1.J'ai bien l'impression que tu ne peux pas faire autrement... une solution simple aurait été d'inserer une reference nulle dans la queue, mais j'ai le souvenir que ce n'est pas possible avec BlockingQueue (=>Exception).
-
[^]Re: Encapsulation du T dans une classe "Message"
Posté par gc (page perso, ) le 25/06/2007 à 13:30. (lien). Évalué à 1.Oui effectivement. Après réflexion, je peux wrapper cette indirection, donc les "réels" utilisateurs ne la verront pas, et roulaize. Merci en tous cas de ton aide !
-
-
-
Revenir en haut de page || Retourner aux forums || Retourner au forum Programmation.java



Cette discussion est archivée, il n'est plus possible de laisser des commentaires.
Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.