Ač se může zdát, že parallelism a concurrency jsou dva různé názvy pro jeden stejný fenomén, není tomu tak. Ve zkratce, paralelismus se nám hodí v algoritmech, kde chceme zpracovat velké množství výpočetních operací a jsme schopni je rozpadnout na podúkoly pro jednotlivá procesorová jádra. Naopak aplikace, která zvládá Concurrency, musí umět obsloužit mnoho úkolů, které navzájem soupeří o omezené zdroje – typicky jde o zpracovávání nějakých requestů (např. HTTP…). Podrobněji je to popsané v článku.

On Parallelism and Concurrency

Parallelism is the problem of doing a single job — say, inverting a matrix or sorting a list — faster by employing multiple processing units. This is done by breaking up the job into multiple cooperating subtasks, different subsets of which running on a different core. Concurrency, in contrast, is the problem of scheduling some computational resources to a set of largely independent tasks that compete over those resources. The main performance measure we care about when we speak of concurrency isn’t the duration (latency) of any single task, but throughput — the number of tasks we can process per time-unit.

https://inside.java/2021/11/30/on-parallelism-and-concurrency/?mkt_tok=NDI2LVFWRC0xMTQAAAGBH2noyXeY0wB7NAZUCiNB0N5sFGyFN8Li-P2lmQ86mShgBNyLaFKnnZN01Bn51XU6lhMBYZQyljA64_guY9PSkgN-Vw0ZK7POa5L3a2nIG7HVpw