Как использовать ExecutorCompletionService - PullRequest
0 голосов
/ 31 января 2010

Я хотел бы использовать конструктор на ExecutorCompletionService, который принимает предварительно определенный BlockingQueue.

Может ли кто-нибудь предоставить фрагмент кода, чтобы показать, как это делается. Кажется, только взять BlockingQueue с Future с. Как это соотносится с тем, что отправка должна быть сделана с Callable s.

Я немного запутался, пожалуйста, помогите ...

Ответы [ 2 ]

1 голос
/ 31 января 2010

Callables, поставляемый для submit(), будет внутренне обернут как FutureTask с, и это те (или обертка вокруг единицы), которые в конечном итоге будут вставлены в предоставленную очередь. Это все детали реализации, хотя. (И обратите внимание, что этот вариант использования для вставки результата в очередь является основной причиной, по которой в FutureTask существует защищенный метод done().) В контракте говорится, что функции, выдающие результаты, входят в и в итоге результаты выходят. Future, извлеченные из очереди, представляют конечные результаты функций, которые вы отправили ранее.

1 голос
/ 31 января 2010

Javadoc для ExecutorCompletionService содержит большой пример кода, а документированный конструктор принимает BlockingQueue.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...