2011-09-26 2 views
6

J'ai un problème avec un serveur Tomcat qui ne peut pas s'arrêter correctement. J'ai pris une décharge de fil après avoir émis la commande d'arrêt, et il ressemble à ceci:Quels sont les fils de discussion Java commençant par "pool"?

http://pastebin.com/7SW4wZN9

Le fil que je crois est le « suspect » qui ne permet pas la machine virtuelle de fermer est celui nommé "pool-4-thread-1". Le reste d'entre eux sont des threads de démon ou des threads VM internes. En essayant de découvrir à quoi sert ce fil, j'ai remarqué qu'il existe d'autres programmes Java qui créent des threads avec des noms similaires (par exemple, JVisualVM crée de tels threads). Donc, je me demande si quelqu'un d'autre sait ce qu'est ce fil et comment il peut être créé.

+0

qu'est-ce que cela veut dire "incapable de shudtown gracieusement"? – Bozho

+0

Cela signifie que la machine virtuelle ne se termine pas après l'exécution de shutdown.sh. Il a besoin d'un signal de destruction au niveau du système d'exploitation. – mavroprovato

Répondre

12

Ces threads sont probablement créés par un ExecutorService que vous avez créé dans votre code quelque part (directement ou indirectement via une bibliothèque) et qui doit être arrêté (par exemple dans un ServletContextListener).

+0

Oui, c'est vrai. +1 .. – Bozho

+0

Vous avez raison, j'ai créé une classe de test avec un ExecutorService et un Thread avec ce nom a été créé. Des idées sur la façon dont je peux ... chasser ce ExecutorService et le tuer? – mavroprovato

+0

Difficile, car ils utilisent le nom par défaut, qui ne le donne pas. Vous pouvez faire des vidages de trace de pile pendant que l'application est en cours d'exécution, peut-être que vous pouvez en attraper un en train de faire le travail. Cela devrait donner des noms de classe. Quel genre de bibliothèques utilisez-vous? Tout ce qui pourrait fonctionner avec les threads de fond? – Thilo

Questions connexes