在操作系统中,每个独立运行的程序就是一个进程,当一个程序进入内存运行时,即变成一个进程。
进程是操作系统进行资源分配和调度的一个独立单位,是具有独立功能且处于运行过程中的程序。
进程三大特征:
-
独立性
进程是操作系统中独立存在的实体,拥有自己独立的资源,每个进程都拥有自己私有的地址空间,其他进程不可以直接访问该地址空间,除非进程本身允许的情况下才能进行访问。 -
动态性
程序只是一个静态的指令集和,只有当程序进入内存运行时,才变成一个进程。进程是一个正在内存中运行的、动态的指令集合,进程具有自己的生命周期和各种不同的状态。
3.并发性
多个进程可以在单个处理器上并发执行,多个进程之间互不影响。
目前的操作系统都支持多进程的并发,但在具体的实现细节上会采用不同的策略。
对一个cup而言,在某一个时间点只能执行一个进程,CPU会不断在多个进程之间来回轮换执行。
并发性和并行性是两个相似又不同的概念:
并发: 指多个事件在同一时间间隔内发生,其实质是在一个CPU上同时运行多个进程,CPU要在多个进程之间切换。并发并不是真正的同时发生,而是对有限物理资源进行共享以便提高效率。
并行: 指多个事件在同一时刻发生,其实质是多个进程同一时刻可在不同的CPU上同时执行,每个CPU运行一个进程。
并发:
并行:
线程
线程是进程的组成部分,一个线程必须在一个进程之内,而一个进程可以用于多个线程,一个进程至少有一个线程。
线程是最小的处理单位,线程可以拥有自己的堆栈、计数器和局部变量,但不能拥有系统资源,多个线程共享其所在进程的系统资源。
多线程在多CPU的计算机中可真正物理上同时执行;
对于单CPU而言,只是逻辑上的同时执行,每个时刻只有一个线程执行。
多线程扩展了多进程的概念,使得同一个进程可以同时并发处理多个任务。因此,线程也被称为轻量级进程。
多进程与多线程是多任务的两种类型,主要区别
1.多进程之间的数据块是相互独立的,彼此互不影响,进程之间需要通过信号、管道等进行交互。
2.多线程之间的数据块可以共享,一个进程中的各个线程可以共享程序片段、数据段等资源。
多线程比多进程更便于资源管理。
Java多线程优点:
1.多线程之间共享内存,节约系统资源成本。
2.充分利用CPU,执行并发任务效率高。
3.Java内置多线程功能支持,简化编程模型。