bonsoir, mon problème est le suivant :
mon application est une plate-forme multi-agents minimale qui sert à développer et exécuter des SMA (Systèmes Multi-Agents).
Du point de vue de programmation, les agents sont des objets actifs (possèdent un thread de contrôle). Dés qu'un agent sera créé, il doit s'inscrire auprés AMS. et Dés qu'il sera supprimé, il annule son inscription auprés AMS.
AMS est une classe singleton (Un seul AMS peut s'exécuter à la fois) et il possède un répertoire (HashMap) de tous les agents.
Mon pb se pose lorsque je veux ouvrir un nouveau SMA ou fermer le SMA courant. je dois supprimer tous les agents. mais cette action ne peut être faite que si l'agent ne fais rien (Attente d'une tâche à réaliser). donc les agents actifs (sont entrain d'exécuter une tâche) ne peuvent être supprimé qu"à la fin d'exécution de cette tâche. et moi je dois réinitialiser les composant de ma plateforme surtout AMS (son répertoire doit être vide si je veux ouvrir\créer un nouveau SMA) . j'ai pensé à vider explicitement le répertoire de l'AMS, mais le pb que les agents non supprimé peut à tous moments communiquer avec AMS.
donc j'ai pensé à demander à l'utilisateur de redémarrer l'application, mais comment faire pour redémarrer l'application?.
j'ai pensé à faire new Application() et afficher une nouvelle fenêtre de l'application mais le pb que la nouvelle fenêtre de l'application travaille toujours avec l'ancien AMS. je dois réinitialiser toutes les classes de mon application. comment faire?