The difference between Concurrency and Parallel is in my opinion somewhat subjective, depending on how you view the problem.
Examples of Concurrency:
1. I surf the web And I run an installer for another program.
2. One gopher brings empty carts back, while another brings full carts to the incinerator.
The idea of concurrency is that two completely separate tasks are being done at the same time. There may be synchronization points between the two tasks, but the tasks themselves are dissimilar.
Viewed in one way moving empty wheelbarrows may be completely different from moving filled ones.
Viewed in another way, they might seem very similar.
Concurrency has to do with task parallelism.
Parallel has to do with data parallelism.
There's a gray line between the two where you can't clearly differentiate between them.
Examples of Concurrency:
1. I surf the web And I run an installer for another program.
2. One gopher brings empty carts back, while another brings full carts to the incinerator.
The idea of concurrency is that two completely separate tasks are being done at the same time. There may be synchronization points between the two tasks, but the tasks themselves are dissimilar.
Viewed in one way moving empty wheelbarrows may be completely different from moving filled ones.
Viewed in another way, they might seem very similar.
Concurrency has to do with task parallelism.
Parallel has to do with data parallelism.
There's a gray line between the two where you can't clearly differentiate between them.