Software Engineering · Performance
Making progress on multiple tasks over the same time period by switching between them — not necessarily running them at the exact same instant.
Example: A single-threaded server juggling thousands of open connections by switching between them whenever one is waiting on I/O.
In practice: Concurrency is a structuring problem, not a hardware one — a single core can run concurrent code fine by interleaving tasks; parallelism is what specifically requires multiple cores running at once.