* 'master' of https://github.com/iluwatar/java-design-patterns: (27 commits) Remove use of coveralls-maven-plugin (sonarqube.com covers this) Add SonarQube.com badge Fix environment variable Add Travis instructions for SonarQube.com analysis Adds more criticism to Singleton pattern. Event Based Asynchronous pattern: Add missing license header and puml diagram Changed config to non-interactive Moved config into a separate dir Unused import removed. End process logic clause has been corrected. Caching pattern: Documentation and diagram Fixes #437. Adds criticism to Singleton pattern. Alter JUnit tests to run in lesser time. Updated version snapshot to 1.14.0 Changes based on review feedback. Closes #436. Adds criticism to service locator pattern. Caching pattern: Implementation of Cache-Aside pattern Caching pattern: Style fix for null check Caching pattern: Refactor LRU cache to avoid NPE and unnecessary cache lookup Caching pattern: Refactor shutdown hook to use method reference ...
layout, title, folder, permalink, pumlid, categories, tags
layout | title | folder | permalink | pumlid | categories | tags | ||||
---|---|---|---|---|---|---|---|---|---|---|
pattern | Async Method Invocation | async-method-invocation | /patterns/async-method-invocation/ | TSdB3SCW303GLTe1mFTkunWhk0A3_4dKxTi5UdlIUuhIoCPfuz4Zjhy03EzwIlGyqjbeQR16fJL1HjuOQF362qjZbrFBnWWsTPZeFm3wHwbCZhvQ4RqMOSXIuA1_LzDctJd75m00 | Concurrency |
|
Intent
Asynchronous method invocation is pattern where the calling thread 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.
Applicability
Use async method invocation pattern when
- 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
- FutureTask, CompletableFuture and ExecutorService (Java)
- Task-based Asynchronous Pattern (.NET)