In olden days, computers had only one CPU, each much slower than any CPU today, and this made concurrency very limited. Hardware manufacturers successfully found ways to make CPUs faster, and this made single-threaded programs faster and the time-sharing of CPU more productive. But eventually, this had a diminishing return, and manufacturers found they could increase computational power by putting multiple CPUs in a device. From desktops and laptops to servers and smartphones, most hardware nowadays sports multiple CPUs, or cores.
For developers, this is a major disruption in building software and how coding is done. Single-threaded software is easier to code. It works fine on a single-core device, but a single-threaded program on a multi-core device will only use one core, leaving the others not utilized. If you want your program to scale, it needs...