adressage des Listener et autres Observer ... - Java - Programmation
Marsh Posté le 12-04-2005 à 14:38:30
UP
toujours pas d'idée ? ou même pour récuperer une instance d'une classe sans la connaitre à l'avance (c'est pour pas la passer comme argument dans tous mes constructeurs ...)
Marsh Posté le 12-04-2005 à 15:11:42
pour faire communiquer des threads, on envoie des messages dans des files d'attente, et on les exécute avec un pattern command.
Marsh Posté le 12-04-2005 à 15:40:52
wé c'est a peu près ce à quoi j'avais pensé sauf que :
si 2 threads sont sensés communiquer alternativement (si ils sont identiques, la comm se produit en double par ex), le command pattern risque de bloquer l'exec du thread adressé puisqu'en suite, tout découle des instructions de la première commande (à moins de rajouter des yield ou des wait dedans)
bref n'est-il pas mieux alors de faire un truc ds le genre
Code :
|
bon je precise que je maitrise pas encore la concurrence et l'attribut synchronized donc je me pose peut-etre de fausses questions
Marsh Posté le 12-04-2005 à 15:42:30
je ne comprends pas ta remarque.
par contre une chose est sûre, ce système fonctionnne.
Marsh Posté le 12-04-2005 à 15:52:51
oui la remarque c'est pour dire que si le premier thread adresse le second au moyen d'un command pattern, ce qui se résume à peu près à :
dans le thread1 : thread2.action(...);
là le thread2 ne reprends pas la main pour l'execution de son run() à moins de glisser judicieusement des yield() au bon endroit
dans le cas d'échanges nombreux et complexes, je sens que ca va vite devenir une grosse embrouille de faire comme ca ...
Marsh Posté le 12-04-2005 à 16:43:58
oulà, ce sont les opération d'insertion et de retrait de la file qui sont exclusives, pas les opérations d'exécution.
Marsh Posté le 11-04-2005 à 19:01:20
Salut,
je voudrais savoir s'il existe déja un moyen pour adresser un observateur en particulier parmis plusieurs.
Je ne parles pas ici de refaire un Observer en ajoutant un équivalent d'adresse dans l'appel dans le genre notifyObserver(address,arg) mais bien d'une solution qui existerait déja.
Sinon, si vous connaissez un autre moyen de faire communiquer des classes ou plutot des threads ... (mis à part le command pattern ou une adaptation à l'envoi de message)
---------------
The Rom's, à votre service