Erlang 之父 Joe Armstrong 用一张5岁小孩都能看懂的图解释了并发与并行的区别
并发是两个队列交替使用一台咖啡机,并行是两个队列同时使用两台咖啡机。并发和并行都可以是多个线程,并行是多个线程在不同cpu上同时执行,而并发是不同线程在同个cpu上交替执行。所以在并发程序设计中,因为不同线程可以先后操作同一数据,所以,数据可见性和一致性尤其重要,在java中主要通过加锁,synchronized关键字实现多个线程同步访问数据。
可参考
并发是不同代码块交替或同时执行的性能,而并发是不同代码块同时执行的性能。