Rich Hickey spent around two and a half years working on Clojure before releasing it to a wider audience[2]. One of his design goals was to create a programming language with first-class support for concurrency[3]. As a result, Clojure has well-thought-out concurrency tools.
Introduction to concurrency
Concurrency or parallelism
While some people use the terms concurrency and parallelism interchangeably, we need to make it clear that they are related, but are not the same[4].
Concurrency is about the coordination and composition of independent processes, while parallelism is the simultaneous execution of processes.
The following diagram illustrates how concurrency and parallelism handle processes during a program's execution...