CodeGym/Java курс/Модул 3/Изпълнители: изпълними обекти

Изпълнители: изпълними обекти

На разположение

6.1 Изпълними обекти

Така стигнахме до най-голямата част от пакета. Ще бъдат описани интерфейси за изпълнение на асинхронни задачи с възможност за получаване на резултати чрез интерфейсите Future и Callable, Howто и услуги и фабрики за създаване на пулове от нишки: ThreadPoolExecutor, ScheduledPoolExecutor, ForkJoinPool.

За по-добро разбиране, нека направим малка декомпозиция на интерфейси и класове.

6.2 Реализации на изпълними обекти

Future<V>е чудесен интерфейс за получаване на резултатите от асинхронна операция. Ключовият метод тук е методът get, който блокира текущата нишка (със or без таймаут), докато не завърши асинхронна операция на друга нишка. Има и допълнителни методи за отмяна на операцията и проверка на текущото състояние. Класът FutureTask често се използва като имплементация.

RunnableFuture<V>- ако Future е интерфейс за API на клиента, тогава интерфейсът RunnableFuture вече се използва за стартиране на асинхронната част. Успешното завършване на метода run() завършва асинхронната операция и позволява резултатите да бъдат извлечени чрез метода get.

Callable<V>- Разширен аналог на интерфейса Runnable за асинхронни операции. Позволява ви да върнете въведена стойност и да хвърлите проверено изключение. Въпреки че този интерфейс няма метод run(), много класове java.util.concurrent го поддържат заедно с Runnable.

FutureTask<V>— внедряване на интерфейса Future/RunnableFuture. Асинхронна операция се приема като вход към един от конструкторите под формата на Runnable or Callable обекти. Самият клас FutureTask е проектиран да бъде стартиран в работна нишка, например чрез new Thread(task).start() or чрез ThreadPoolExecutor. Резултатите от асинхронна операция се извличат чрез метода get(...).

Delayed- използва се за асинхронни задачи, които трябва да стартират в бъдеще, Howто и в DelayQueue. Позволява ви да зададете времето преди началото на асинхронна операция.

ScheduledFuture<V>- маркерен интерфейс, който съчетава интерфейсите Future и Delayed.

RunnableScheduledFuture<V>- интерфейс, който комбинира RunnableFuture и ScheduledFuture. Освен това можете да посочите дали задачата е еднократна or трябва да се изпълнява на определена честота.

Коментари
  • Популярен
  • Нов
  • Стар
Трябва да сте влезли, за да оставите коментар
Тази страница все още няма коментари