参考Erlang之父用一幅5岁小孩都能看懂的图来解释并发与并行:
从它们的对立面来理解可能更有帮助:
并发的反义词是顺序,concurrency vs sequential
并行的反义词是串行,Parallelism vs Serial
其它关于并发&并行的解释:
并发:指代码逻辑上可以并行,有并行的潜力,但是不一定当前是真的以物理并行的方式运行,并发指的是代码的性质;
并行:指的是物理运行状态。
并发:交替做不同事的能力;
并行:同时做不同事的能力。
并发:不同代码块交替执行的性能;
并行:不同代码块同时执行的性能。
并发和并行都可以是多个线程,就看这些线程能不能同时被(多个)CPU执行,能则是并行。并发是多个线程被(一个)CPU轮流切换着执行。