并行:多个事件在同一时间发生(同时执行);
并发:多个时间在同一时间段发生(同一时间段内,交替执行);
《并发的艺术》中大概是这样写的,系统中有多个任务同时存在可称之为“并发”,系统内有多个任务同时执行可称之为“并行”;并发是并行的子集。比如在单核CPU系统上,只可能存在并发而不可能存在并行。
https://blog.csdn.net/java_lifeng/article/details/102734484
进程,资源分配的最小单位。计算机的核心是cpu,进程和线程都是一个时间段的描述,是CPU工作时间段的描述。
进程的概念主要有两点:第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。第二,进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时(操作系统执行之),它才能成为一个活动的实体,我们称其为进程。
线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。
一个进程可以拥有多个线程,每个线程使用其所属进程的栈空间。 线程与进程的一个主要区别是,同一进程内的多个线程会共享部分状态, 多个线程可以读写同一块内存(一个进程无法直接访问另一进程的内存)。同时, 每个线程还拥有自己的寄存器和栈,其它线程可以读写这些栈内存;
线程是进程的一个特定执行路径。当一个线程修改了进程中的资源, 它的兄弟线程可以立即看到这种变化;