1.进程
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。
例如:
一个在内存中运行的应用程序。一个.exe就是一个进程
2.线程
线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
线程是一条可以执行的路径:
- 在单核CPU中,多线程就是一个CPU来回的切换,在交替执行
- 在多核CPU中,多线程是有多条执行路径在同时(并行)执行,每个核执行一个线程,多个核可能是同时执行的
3.进程与线程的区别
(1)进程是系统分配资源的基本单位,线程是CPU调度的基本单位
(2)一个进程可以包含多个线程
(3)进程的实际执行单位就是线程
(4)一个进程里面至少包含一个线程,线程的存储必须依托于进程
(5)进程不可以共享资源,线程可以共享资源
4.并发与并行
- 并发是两个或多个事件在同一时间间隔内发生
- 并行是两个或多个事件在同一时刻发生
例如:
- 顺序执行:你吃饭吃到一半,电话来了,你一直到吃完了以后才去接,这就说明你不支持并发也不支持并行。
- 并发:你吃饭吃到一半,电话来了,你停了下来接了电话,接完后继续吃饭,这说明你支持并发。
- 并行:你吃饭吃到一半,电话来了,你一边打电话一边吃饭,这说明你支持并发也支持并行
5.主线程与子线程
JVM 启动时会创建一个主线程,该主线程负责执行 main 方法 . 主线程就是运行 main 方法的线程,Thread、Runnable的开启的线程是主线程下的子线程,是父子关系,此时该java程序即为多线程的,这些线程共同进行资源的调度和执行。