Executor et Daemon en Java
J'ai un MyThread objet qui j'instancie lorsque mon application est chargé par le serveur, je le marque comme un fil de Démon et ensuite appeler start()
sur elle. Le thread est destiné à s'asseoir et d'attendre pour plus d'informations à partir d'une file d'attente aussi longtemps que l'application est active.
Mon problème/la question est: est-ce Actuellement MyThread est l'extension de Fil parce que j'ai marquer en tant que Démon et j'ai lu sur la façon dont il est plus prefferable à mettre en œuvre des Exécutables, et à utiliser les Exécuteurs. Donc, ce que je voulais poser est de savoir si le MyThread mettra en œuvre Exécutable au lieu de prolonger le Thread (et bien sûr, sera renommé) et je vais utiliser newSingleThreadScheduledExecutor()
comment, quoi, ou peut-être où puis-je marque quelque chose comme Démon.
J'espère que je n'ai pas fait un gâchis de conditions, veuillez m'excuser si j'ai certaines parties de l'environnement multithreading sont très nouveau pour moi.
Merci
Ittai
Mise à jour:
Le module que je fais allusion dans mon application est une application web qui a un peu de threads en fait de ce genre et de ce qu'ils ont en commun est qu'ils sont tous dans le ServletContext
en tant que membre, pour diverses raisons. Actuellement j'étends Thread
à WebThread
qui a le ServletContext
comme un memebr et toutes les sous-classes peuvent utiliser ce. Si je passe sur le Praticable paradigme avec l'Exécuteur testamentaire et de ThreadFactory que, fondamentalement, j'ai besoin d'avoir une vilaine hybride de WebRunnable
qui implémente Runnable
et a la ServletContext
comme membre du public et d'avoir mon ThreadFactory
mettre en œuvre newThread(WebRunnable arg0)
en plus de newThread(Runnable arg0)
.
Je ne suis pas sûr de ce qui est le meilleur.
Grâce
source d'informationauteur Ittai
Vous devez vous connecter pour publier un commentaire.
Si vous utilisez un régulier exécuteur testamentaire, vous pouvez fournir un ThreadFactory. Ce est utilisé pour créer de nouveaux Fils, et vous pouvez les modifier (par exemple, les rendre démon) que vous avez besoin.
EDIT: pour répondre À votre mise à jour, votre
ThreadFactory
juste besoin de mettre en œuvrenewThread(Runnable r)
depuis votreWebRunnable
est unRunnable
. Donc pas de réel travail supplémentaire.Consultez la JavaDoc de
newSingleThreadScheduledExecutor(ThreadFactory threadFactory)
Il serait mis en place quelque chose comme ceci:
Juste pour compléter avec une autre solution possible pour l'exhaustivité. Il peut ne pas être aussi agréable.