Parrallelism — Implies a system which can perform multiple tasks simultaneously.
Concurrency — Supports more than one task making progress. A scheduler may provide concurrency on single core systems.
Note that there is a distinction between User threads — Threads created and managed with a
user level library, and Kernel threads — Threads created and run as part of the Kernel.