adressage des Listener et autres Observer ...

adressage des Listener et autres Observer ... - Java - Programmation

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
Reply

Marsh Posté le 11-04-2005 à 19:01:20   

Reply

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 ...)


---------------
The Rom's, à votre service
Reply

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.


---------------
trainoo.com, c'est fini
Reply

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 :
  1. public void run() {
  2.    while(!stop) {
  3.       message=recup(pool); // ou equiv
  4.       decode(message);
  5.       yield();
  6.    }
  7. }
  8. private void decode(Message mess) {
  9.    ...
  10.    pool.depose(new Message(...));
  11.    // rien d'autre après pour laisser les autres threads avoir la main
  12. }


bon je precise que je maitrise pas encore la concurrence et l'attribut synchronized donc je me pose peut-etre de fausses questions  :??:


Message édité par TheRom_S le 12-04-2005 à 15:41:51

---------------
The Rom's, à votre service
Reply

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.


---------------
trainoo.com, c'est fini
Reply

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 ...


---------------
The Rom's, à votre service
Reply

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.


---------------
trainoo.com, c'est fini
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed