进程:
进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基
本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。
进程的两个主要概念:
(1)进程是一个实体
每个进程都有它自己的存储空间,一般情况下,包括文本区域、数据区域和堆栈区域。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储活动过程中调用的指令和本地变量
(2)进程是一个执行中的程序
程序是一个没有生命的实体,只有处理器赋予程序生命时,它才能成为一个活动的实体,称其为进程
进程是操作系统中最基本、重要的概念。是多道程序系统出现后,为了刻画系统内部出现的动态情况,描述系统内部各道程序的活动规律引进的一个概念,所有多道程序设计的操作系统都建立在进程之上。
线程:
线程(Thread)又叫做轻量级进程。是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一个线程指的是进程中的一个单一顺序的控制流,一个进程中可以并发多个线程,每个线程并行执行不同的任务。线程是独立调度和分派的基本单位,线程可以为操作系统内核调度的的内核线程;由用户调度的用户线程;或者由内核与用户进程进行混合调用。同一进程中的多个线程将共享该进程中的全部系统资源 ,但同一进程的多个线程有各自的调用栈(call stack),自己的寄存器 (register context),自己的线程本地存储(thread-local storage)。线程与线程之间堆空间共享,栈空间独立。
线程的属性:独立调度和执行的基本单位,轻型实体,可并发执行,共享进程资源。
线程的组成部分:CPU时间片,运行数据,线程的逻辑代码。
线程的六个状态:
① 初始状态(NEW):一个尚未启动的线程所处的状态;
② 可运行状态(RUNNABLE):可运行线程的线程状态,可能正在运行,也可能在等待处理器资源;
③ 阻塞状态之锁阻塞(BLOCKED):被阻塞等待监视器锁定的线程所处的状态(即当一个线程试图获取锁,但锁此时被其他线程持有,该线程进入BLOCKED状态,当线程拿到锁则进入RUNNABLE状态);
④ 阻塞状态之无限等待(WAITING):未指定等待时间的线程所处的状态(调用Object.join()或Object.wait()方法时进入此状态,一个线程处于该状态时,只能被另一个线程唤醒,而不能自己主动唤醒,另一个线程调用notify()或notifyAll()或中止状态时来唤醒该线程);
⑤ 阻塞状态之定时等待(TIMED_WAITING):指定等待时间的线程所处的状态(调用Thread.sleep(long)或Object.join(long)或Object.wait(long)方法时进入此状态,直到时间超时或收到唤醒通知,注意wait(0)时是可以自己苏醒的,比如当Thread结束时就会自动苏醒);
⑥ 终止状态:已经执行完成的线程状态。