1. 进程的概念
进程是操作系统对一个正在运行的程序的一种抽象,换言之,可以把进程看做程序的一次运行过程
在操作系统内部,进程又是操作系统进行资源分配的基本(最小)单位
2. 线程的概念
线程是有自己独立任务的代码逻辑
线程也称为轻量级进程
处理一件事件,申请一份资源就够了---线程
线程是系统调度(CPU调度)的最小单位
3. 进程的3种状态
a. 运行状态:获得CPU的进程处于此状态,对应的程序在CPU上运行着
b. 阻塞状态:为了等待某个外部事件的发生(如等待I/O操作的完成,或者等待另一个进程发来消息),暂时无法运行。
c. 就绪状态:具备了一切运行需要的条件,由于其他进程占用CPU而暂时无法运行
4. 线程的6种状态
a. NEW: 创建好了一个java的Thread对象,并安排好了任务,但是还没有开始执行;还没有调用start()方法之前,和PCB没有关系
b. RUNNABLE: 运行+就绪状态,在执行任务时候的一个常态之一
c. TIMED_WAITING: 指定了等待时间的一个阻塞状态,过时不候 .wait(time),sleep(time),join(time)
d. WAITING: 没有指定等待时间,一直死等
e. BLOCK: 等待锁的状态,阻塞状态中的一种
f. TERMINATED: 线程在CPU上结束,系统线程已经销毁,但是java对象还没有回收
5. 联系
(1)两者均可并发执行
(2)线程是指进程内的一个执行单元,一个程序至少有一个进程,一个进程至少有一个线程,一个线程属于一个进程
(3)资源分配给进程,同一进程的所有线程共享该进程的所有资源
(4)处理机分给线程,即真正在处理机上运行的是线程
6. 区别
(1)进程中包含线程,至少有一个主线程
(2)进程是系统分配资源的最小单位
(3)线程是系统调度(CPU调度)的最小单位
(4)线程共享进程申请来的资源
进程和进程之间不共享内存空间;同一个进程的线程之间共享同一个内存空间
(5)线程之间是可以相互影响的,一个线程如果崩溃了整个进程就有可能崩溃