2014-02-14 10 views
0

Есть ли способ сделать постоянно обновляемый пул потоков и проверить, закончены ли какие-либо переданные вызовы и получить это значение? ExcutorService позволяет вам отправлять кучу потоков, а затем получать вызываемые результаты позже, но что, если вы не знаете, сколько вызываемых материалов будут отправлены или вы хотите постоянно отправлять вызовы?Как получить результат любого завершенного вызова?

ThreadPoolExecutor звучит так, как я хочу, но это может работать только в списке runnables, и мне нужно иметь возможность получать результаты из потоков.

В моем случае заказ не имеет значения. Я хочу постоянно добавлять вызовы в какую-то очередь, а затем делать что-то с этими результатами по мере их поступления. Можно ли это сделать?

ответ

2

Я не уверен на 100%, я понимаю ваше требование, но я думаю, вы можете использовать ExecutorCompletionService.

Этот класс обертывания Исполнителю, и вы можете использовать submit добавлять задачи, и take или poll для получения следующего завершения задачи. Если еще не завершены задачи, take будет блокироваться до завершения одной задачи.

+0

Спасибо, это похоже на то, что я искал. – tomsrobots

Смежные вопросы