Files
java-design-patterns/async-method-invocation/index.md
T

33 lines
1.3 KiB
Markdown
Raw Normal View History

2015-08-13 23:54:40 +02:00
---
layout: pattern
title: Async Method Invocation
folder: async-method-invocation
permalink: /patterns/async-method-invocation/
2015-08-20 21:40:07 +02:00
categories: Concurrency
2015-12-28 15:52:44 +02:00
tags:
- Java
- Difficulty-Intermediate
- Functional
2015-08-13 23:54:40 +02:00
---
## Intent
Asynchronous method invocation is pattern where the calling thread
2015-08-13 23:54:40 +02:00
is not blocked while waiting results of tasks. The pattern provides parallel
processing of multiple independent tasks and retrieving the results via
callbacks or waiting until everything is done.
![alt text](./etc/async-method-invocation.png "Async Method Invocation")
## Applicability
Use async method invocation pattern when
2015-08-13 23:54:40 +02:00
* you have multiple independent tasks that can run in parallel
* you need to improve the performance of a group of sequential tasks
* you have limited amount of processing capacity or long running tasks and the
caller should not wait the tasks to be ready
## Real world examples
2015-08-13 23:54:40 +02:00
* [FutureTask](http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/FutureTask.html), [CompletableFuture](https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html) and [ExecutorService](http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ExecutorService.html) (Java)
* [Task-based Asynchronous Pattern](https://msdn.microsoft.com/en-us/library/hh873175.aspx) (.NET)