Alors voila le problème : j'ai une classe Buffer ; en fait c'est pas vraiment un buffer mais bon. Quand on y ajoute un objet, celui-ci subit un traitement effectué par un autre objet implémentant une interface Worker.
J'ai un type de Worker qui effectue son traitement de manière asynchrone : il hérite de Thread, et quand on lui passe un objet, il est ajouté à une file d'attente.
Donc la chose se fait comme ça :
Code :
- // contruire le Buffer
- Buffer buffer = new Buffer(5);
- // construire le Worker
- Worker worker = new AsynchWorker();
- // lancer le worker et l'adjoindre au buffer
- worker.start();
- buffer.addWorker(worker);
- // utiliser le buffer
- buffer.push(truc);
|
Mon problème est donc : comment arrêter proprement mon Thread ?
Le moyen qui m'a sauté au visage était d'appeler stop() dans le finalize() de mon Buffer. Mais ca me fait utiliser à la fois finalize() et instanceof, deux trucs sales que j'aime pas.
Il doit y avoir plus propre mais je ne vois pas, sachant que ca va pas être trop facile de garder une référence sur le worker ailleurs que dans buffer. Une idée ?