Concurrency refers to the ability of a system to execute multiple tasks through simultaneous execution or time-sharing, sharing resources and managing interactions. Concurrency improves responsiveness, throughput, and scalability

Excerpts from Asynchrony is not Concurrency

  • Asynchrony: the possibility for tasks to run out of order and still be correct.
  • Concurrency: the ability of a system to progress multiple tasks at a time, be it via parallelism or task switching.
  • Parallelism: the ability of a system to execute more than one task simultaneously at the physical level.

Excerpts from Concurrent Programming with Harmony by Robbert van Renesse

The Problems with Concurrent Programming

Programming with concurrency is hard. Concurrent programming, a.k.a. multithreaded programming, involves multiple threads running in parallel while sharing variables. As mentioned before, there are two problems with concurrent programming: non-determinism and non-atomicity.