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

Где купить мотоопрыскиватель в Украине

23.07.2016


В общем, если вы решили напрямую использовать класс Thread, но не знаете, изменится ли способ его выполнения в будущем, то реализация интерфейса Executor может существенно упростить процедуру внесения любых изменений.


Прочие режимы выполнения, которые могут управляться посредством Executor:


организация очереди задач;


порядок выполнения задач;


способ выполнения задач (последовательный или параллельный).


В примере 9.2 показана более сложная реализация Executor, формирующая среду последовательного выполнения задач, которая затем используется в AsyncTask. (В главе 10 объясняется назначение этой среды выполнения.) SerialExecutor реализует шаблон производитель-потребитель, где потоки-производители создают Runnable- задачи и помещают их в очередь, а нотоки-нотребители извлекают эти задачи из очереди и обрабатывают. Возможно стоит купить мотоопрыскиватель в украине.


В этой среде выполнения применяются следующие режимы поведения:


Формирование очереди задач: ArrayDeque - двухсторонняя очередь (элементы могут добавляться и удаляться с обоих концов) - хранит все создаваемые задачи, пока не начнётся их обработка в потоке.


Порядок выполнения задач: все задачи помещаются в конец двухсторонней очереди вызовом mTasks.offer (), то есть задачи в очереди обрабатываются в порядке «первым пришел - первым вышел» (FIFO).


Способ выполнения задач: задачи выполняются последовательно, но не обязательно в одном и том же потоке. Когда завершается выполнение задачи, то есть происходит выход из метода г.run(), вызывается метод scheduleNext(). Этот метод берёт следующую задачу из очереди и передаёт её другому объекту Executor из пула потоков, поэтому любой поток может выполнить предложенную задачу.


Подводя краткий итог, можно сказать, что SerialExecutor формирует среду выполнения, которая обеспечивает последовательное выполнение задач с возможностью обработки в разных потоках. Изменение способа выполнения задач с последовательного на параллельный может увеличить производительность приложения, но при этом возникает необходимость обеспечения безопасности потоков при параллельном выполнении задач, связанных друг с другом.


Итак, мы убедились, что Executor удобен для асинхронного выполнения, но реализация режима выполнения с нуля требуется крайне редко. Самой полезной реализацией Executor является пул потоков, который мы рассмотрим в следующем разделе.