Parallel execution versus concurrency
The concepts of concurrency and parallelization are not only related, but they are deeply connected to each other; you may think of them as identical twin brothers. They look almost the same, but there are differences. Let's try to discover.
In the previous example, we discussed concurrency, but it seemed to execute in parallel. Now, let's take a better example, which will not only help us understand parallelization, but will allow us to understand the differences between concurrency and parallelization as well.
Think of a hotel with 5 customers who ordered 15 dishes. These 15 dishes represent identical tasks, and each of them require to be cooked by a chef. Now, as with the previous example, think of the cooks as threads (in the previous example, you and your family member were playing the role of a cook in your home), but rather than sharing sub-parts of a dish, they will cook each dish at a time (because, obviously, there are 15 orders!).
Now, if you...