Помогите Диме помочь помогать помочь помогать

Юбас

27.07.2016


Пул потоков управляет очередью задач и рабочими потоками, по нс управляет результатами завершившихся задач. Это умеет делать ExecutorCompletionService, который содержит очередь результатов (на основе BlockingQueue) завершившихся задач, как показано на рис. 9.3. Когда задача завершается, объект Fututre помещается в очередь, доступную потокам-потребителям, так что они могут обрабатывать результаты в порядке завершения задачи.


Наиболее часто этот механизм используется для вывода на экран многочисленных загружаемых изображений. Пользовательский интерфейс получает данные асинхронно, и загружаемые изображения выводятся на экран, как только становятся доступными, независимо от состояния загрузки других изображений. Для этой работы лучше подходит ExecutorCompletionService, поскольку загружаемые изображения могут помещаться в очередь результатов и обрабатываться сразу, как только станут доступными.


Экземпляр Callable, который представляет задачу, производящую результат. Этот объект возвращает изображение, загружаемое через сетевое соединение. Узнайте юбас цена.


Реализация ExecutorCompletionService, которая содержит среду выполнения Executor и предоставляет методы shutdown!) и istermina- ted () для управления жизненным циклом этой среды.


Поток-потребитель, опрашивающий очередь для получения результатов завершённых задач. Если объект Executor завершает работу, значит, все задачи выполнены и можно остановить опрос очереди результатов. Поток-потребитель завершается сразу вслед за объектом Executor.