Concurrency is about dealing with many things at once; parallelism is about doing many things at once. Concurrency is a way to structure a program so multiple tasks make progress by interleaving; parallelism is actually executing them simultaneously on multiple cores.
How it works
A single CPU core can be but not parallel: it rapidly switches between tasks, so they overlap in time even though only one runs at any instant. needs multiple cores running instructions at the same moment.
