Concurrency is the composition of independently executing computations.
Race condition occurs when two or more threads can access shared data and they try to change it at the same time.
Concurrency is when two or more tasks can start, run, and complete in overlapping time periods. It doesn't necessarily mean they'll ever both be running at the same instant. For example, multitasking on a single-core machine.
The Deadlock Empire - Interactive exercises.