Skip to content

Files

Latest commit

723afb8 · Aug 25, 2020

History

History
This branch is 1264 commits behind iluwatar/java-design-patterns:master.

half-sync-half-async

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
Dec 7, 2019
Aug 15, 2020
Jul 6, 2020
Aug 25, 2020
layout title folder permalink categories tags
pattern
Half-Sync/Half-Async
half-sync-half-async
/patterns/half-sync-half-async/
Concurrency
Performance

Intent

The Half-Sync/Half-Async pattern decouples synchronous I/O from asynchronous I/O in a system to simplify concurrent programming effort without degrading execution efficiency.

Class diagram

Half-Sync/Half-Async class diagram

Applicability

Use Half-Sync/Half-Async pattern when

  • a system possesses following characteristics:
    • the system must perform tasks in response to external events that occur asynchronously, like hardware interrupts in OS
    • it is inefficient to dedicate separate thread of control to perform synchronous I/O for each external source of event
    • the higher level tasks in the system can be simplified significantly if I/O is performed synchronously.
  • one or more tasks in a system must run in a single thread of control, while other tasks may benefit from multi-threading.

Real world examples

Credits