2010-01-30 4 views
0

Je voudrais utiliser le constructeur sur le ExecutorCompletionService qui prend un BlockingQueue prédéfini.Comment utiliser un ExecutorCompletionService

Quelqu'un peut-il fournir un extrait de code pour montrer comment cela est fait. Il semble seulement prendre un BlockingQueue avec Future s. Comment cela correspond-il au fait que soumettre doit être fait avec Callable s.

Je suis un peu confus ici - s'il vous plaît aider ...

Répondre

1

Le Callables fourni à submit() sera enveloppé en interne comme FutureTask s, et ce sont ces (ou une enveloppe autour d'un) qui finira par être inséré dans la file d'attente disponible. C'est tout un détail de mise en œuvre, cependant. (Et, notez que ce cas d'utilisation d'insertion du résultat dans la file d'attente est la principale raison pour laquelle il existe une méthode done() dans FutureTask.) Le contrat indique que les fonctions qui génèrent des résultats entrent en jeu et que les résultats finissent par sortir. Les Future extraits de la file d'attente représentent les résultats éventuels des fonctions que vous avez soumises précédemment.

1

Le javadoc for ExecutorCompletionService a un grand échantillon de code, et le constructeur documenté prend un BlockingQueue.

+0

Oui J'ai regardé que cela ne m'aide pas parce que le gros bloc de code n'utilise pas le constructeur dont j'ai besoin - l'avez-vous déjà essayé vous-même? – Dan

+0

Comme je l'ai dit, le javadoc montre aussi un constructeur qui prend une 'BlockingQueue' – skaffman

Questions connexes