10
votes

Comment changer le nom des threads dans un service d'exécution?

J'utilise un service exécutorservice pour exécuter des appelables, mais le nom des fils est comme une piscine fixe-1-thread-1.

Comment je change le nom des threads? Si ce n'est pas possible, une autre façon d'exécuter des appelables, je peux définir le nom des threads?


3 commentaires

Je viens de me demander cela l'autre jour - Stackoverflow.com/questions/6113746/...


@mre, oui, il se demande beaucoup.


TL; DR Réponse: Stackoverflow.com/a/9748697/231917


3 Réponses :


16
votes

Vous devrez utiliser une implémentation exécuteur qui vous permet de définir le Filffactory 1 Utilisé pour créer des threads, par exemple, threadpoolEcutor . Passer une instance qui crée des threads avec les noms appropriés.

Il existe également une classe pratique dans les communes-lang qui permet de spécifier des noms de threads avec un motif: BasicTheadFactory . Cela vous empêche de devoir créer une sous-classe Filfactory pour fournir le comportement de nommage.


3 commentaires

+1, pour référence Javadoc et réponse correcte / concise


Il y a une implémentation Java natif de l'interface TRANSFACTORY?


@Enato, la seule implémentation de la bibliothèque accessible provenait de la classe d'utilitaire et ne vous permet pas de fournir une chaîne de nom.



6
votes

Guava a presque toujours ce que vous besoin . Filfactory NamedTheDeadFactory = Nouveau FilffactoryBuilder (). SetNameFormat ("My-Sad-thread-% d"). Construire () et transmettez-le à votre ExecuTertorservice .


0 commentaires

4
votes

une manière rapide et sale; xxx


1 commentaires

Cela suppose que vous pouvez modifier la méthode de course du fil.