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

Executor

23.07.2016


Главным основополагающим компонентом фреймворка Executor является простой интерфейс Executor. Его основной целью является отделение создания задачи (например, объекта Runnable) от её выполнения, что позволяет реализовать обширный набор режимов работы приложения, перечисленных в начале данной главы. Интерфейс Executor включает всего один метод:


public interface Executor {


void execute( Runnable command );


Несмотря на свою простоту, Executor представляет собой основу для создания мощной среды выполнения и используется чаще, чем базовый интерфейс Thread, поскольку предоставляет улучшенные средства разделения фазы инициализации задачи и фазы её реального выполнения. Сам Executor не выполняет никаких задач - это всего лишь интерфейс, - поэтому необходимы конкретные его реализации, которые определяют способы выполнения задач и обеспечивают фактическое их выполнение. Обычно разработчик занимается реализацией Executor, только когда существуют какие-либо особые требования к задаче. Гораздо чаще, и мы скоро убедимся в этом, используются реализации Executor, предоставляемые платформой. Но для лучшего понимания концепций сначала всё же рассмотрим более подробно один из вариантов нестандартной реализации. Хотите стать популярным? Используйте накрутка рассказать друзьям и вы быстро получите желаемый результат.


Класс SimpleExecutor предоставляет не больше функциональности, чем простое создание потоков как анонимных внутренних классов, поэтому такая реализация может показаться избыточной, однако она обладает некоторыми преимуществами: разделение фаз создания и выполнения, масштабируемость и сокращение числа ссылок на объекты в общей памяти. Реализацию Executor можно изменять без какого-либо влияния на код, который формирует задачи с помощью вызова execute (Runnable), и регулировать число потоков, выполняющих эти задачи. Более того, класс SimpleExecutor не содержит ссылок на внешний класс (как анонимный внутренний класс), следовательно, ноток более рационально использует общую намять.