并发与并行的区别
并发是指多个线程操作同一个资源,不是同时执行,而是交替执行。单核CPU,只不过因为CPU的时间片很短,速度太快,看起来是同时执行。
并行才是真正的同时执行,多核CPU。每个线程使用一个单独的CPU的资源来运行。
并发示意图:
并行示意图:
但在多数情况下,我们的即使有多核,也同样存在并行的情况,且存在并行与并发同时存在的情况。
并发概念
Java并发的重要性毋庸置疑,可以最大化的提高计算资源的效率。
并发是多线程交替的访问同一个资源,该资源本身的特点是同一时刻只允许一个线程的访问,那么就存在竞争的问题。同一个资源可以是CPU资源,也可以是内存资源。
临界资源和临界区
临界资源:一般指内存资源,一个时刻只允许一个进程(在java中,是线程)访问,一个线程正在使用临界资源的时候,另一个线程不能使用。临界资源是非可剥夺性资源,即使是操作系统(或JVM)也无法阻止这种资源的独享行为。
临界区:是一种线程中访问临界资源的那段<