![]() |
[JAVA] stocker un appel de procédure pour l'éxécuter plus tard
Si y a des experts java parmis vous, je suis prenneur :)
Voilà ce que je voudrai faire : j'ai une liste de tâches à exécuter dans laquelle je voudrai stocker directement la procédure à laquelle je veux faire appel. Par exemple dans ma liste : Acheter(pain) <--- Acheter(viande) <--- PayerPar(carte_bleu) <--- etc chaque case représente une procédure, et j'aimerai donc pouvoir parcourir cette liste et exécuter la tâche qui convient au moment où je le veux (par exemple je fais pas Acheter(pain) avant le 24/06/2006 ) Donc l'idée ça serait de stocker quelque part cette "appel" et pouvoir l'exécuter au bon moment et ce essentiellement pour éviter de devoir faire un gros switch du genre : si procedure.type = "Acheter" alors je sais que le paramètre est un objet Aliment qui est stocké dans tel variable de la classe tâche . En écrivant ça je me rend compte que ça ressemble un peu au principe d'un Scheduler simplifié, mais je pense pas qu'on puisse interagir avec sur celui de la JVM. |
http://www.onjava.com/pub/a/onjava/2...10/quartz.html
Sinon dans Google si tu tapes "JVM scheduler" ya pas mal de trucs sur le thread scheduling. |
J'oriente mes recherches vers le package reflection en espérant réussir à faire quelque chose :)
http://www.laltruiste.com/document.p...ospection.html http://ricky81.developpez.com/tutori...pi/reflection/ |
Tu as peut-être déjà trouvé, mais effectivement le package "reflection" peut de permettre de faire ce genre de choses.
Par contre tu devras forcément stocker la classe de ton objet, pour pourvoir le caster au bon moment et invoquer les bonnes méthodes dessus. |
Quote:
|
Quote:
Code:
if(A instance of ClassA) Alors qu'avec la "reflection", si tu as la methode que tu veux appeler, tu peux faire un truc du genre (je n'ai plus l'API en tête) : Code:
method.invoke(maClass.cast(monObjet), new Object[]{les parametres de la methodes} Enfin bon, chacun a sa façon de faire, et faut faire ce qui convient le mieux à chacun :) . Le package "reflection" est très intéressant et très utile :D . |
Un petit exemple
1 Attachment(s)
Bonjour,
tu trouveras un petit exemple dans le fichier joint. Dans mon exemple les tâches sont exécutées les unes à la suite des autres dans une thread. Dans ton cas utilises quartz comme cité plus haut mon code n'est pas thread safe, et ajuste le code. J'ai codé ça vite, c'est largement perfectible. N'hésites pas si tu as des questions. A+, Renaud. |
Merci beaucoup, pile ce que je cherchais :)
Par non thread safe tu sous entends que si, dans la ListeMagique il y a une tâche qui doit lire la variable et une autre la modifier, rien n'empêche que ça se produise en même temps ? A ce moment là il "suffirait" d'ajouter une sémaphore dans la procédure que l'on doit exécuter, qui avant de modifier, attendra que l'autre procédure ait finie de lire ? |
Oui
Salut,
oui c'est exactement ce que je voulais dire :D Bonne continuation, Renaud. |
All times are GMT +2. The time now is 20:21. |
Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.