5 votes

Qu'est-ce que cela signifie d'être un fil démon ?

Je suis pleinement conscient de l'impact du marquage d'un thread comme thread démon sur la sortie de la JVM (si tous les threads non démons sortent, la JVM sortira).

Y a-t-il d'autres effets secondaires à la définition d'un thread comme démon ?

(en aparté, ce qui n'est vraiment pas pertinent, sauf pour la sémantique, la signification d'un fil démon n'est-elle pas inversée dans ce cas : un fil démon ne devrait-il pas maintenir la JVM en vie... par exemple, si j'écrivais mon propre démon HTTP et que je le lançais, ne voudrais-je pas que la JVM reste en vie tant que ce fil est en vie ? Ou existe-t-il une autre sémantique pour le terme "daemon" ?)

4voto

Charlie Martin Points 62306

Tel que vous l'avez, cela signifie que le thread est détaché et fonctionnera aussi longtemps que la JVM fonctionnera, à moins que vous ne l'arrêtiez explicitement. Par spécification, la JVM continue à fonctionner aussi longtemps que n'importe quel non -Le fil du daemon est en cours d'exécution.

Au-delà de ça, ça ne veut pas dire grand-chose.

On pourrait arguer que c'est un retour en arrière - après tout, arrêt (8) tue les processus du démon - mais la JVM devrait se comporter comme un processus qui se comporte bien, ce qui signifie que les gens devraient pouvoir s'attendre à ce qu'elle se termine sans avoir à être tuée. Cette spécification est donc une décision de conception basée sur ce que sera le cas d'utilisation le plus courant.

3voto

Philip Points 895

Un thread démon est un service pour les autres threads. C'est seulement un démon pour la jvm elle-même, pas pour le monde extérieur. Ainsi, si seuls les démons existent, ils n'ont plus d'utilité. Si vous voulez un démon http, il vous suffit d'écrire un serveur https avec des threads normaux et de l'invoquer comme un démon en utilisant les outils de votre système d'exploitation pour exécuter des applications comme un démon.

Pour conclure, un thread de démon en jvm n'est pas un thread de démon pour le système d'exploitation. Les daemons sont généralement des boucles infinies et vous ne voulez pas que votre jvm continue à l'infini alors que tout ce que vous avez en cours d'exécution sont quelques daemons qui attendent des entrées (qui ne sont pas données).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X