java

1. 进程

(1)进程主要有两个特征:

a. 进程是一个实体,占有一定的地址空间。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region),
b. 进程是一段运行过程中的程序。只有在cpu赋予程序一定资源使程序处于运行态,才能被称之为进程,

(2)进程主要有三个状态:

就绪态,运行态,阻塞态,

(3)程序

程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念。进程内部含有程序,是运行中的程序,进程的文本区就是程序,

2. 线程

a. 一个进程可以有多个线程,一个线程只能有一个进程与之对应,

b. 最简单的比喻多线程就像火车的每一节车厢,而进程则是火车。车厢离开火车是无法跑动的,同理火车也不可能只有一节车厢,

c. 主要有新建态,就绪态,运行态,阻塞态;阻塞态又分为等待阻塞,同步阻塞,其他阻塞,死亡状态。

3. 区别

a. 简而言之,一个程序至少有一个进程,一个进程至少有一个线程.

b. 线程的划分尺度小于进程,使得多线程程序的并发性高。

c. 另外,进程在执行过程中拥有独立的内存的单元,而多个线程共享内存,从而极大地提高了程序的运行效率。

d. 线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。

e. 从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。

原文地址:https://www.cnblogs.com/20158424-hxlz/p/10311497.html