Concurrency is multiple things happening at the same time.
Within a single application this is usually represented by multiple
threads or processes running, and can provide complications such as
"race conditions" if not engineered properly.
Historically the most common case for concurrency is separating
the user interface from background processing that may take some
time, however, with the popularization of multiple processors, it
now is used almost as frequently to break tasks into smaller pieces
and process them simultaneously for faster total processing.