现在的位置: 首页 > 综合 > 正文

多进程与多线程总结

2013年02月15日 ⁄ 综合 ⁄ 共 1748字 ⁄ 字号 评论关闭

进程与线程总结一句话就是:线程是进程的一部分,进程是程序的一部分。

进程的作用和定义:

进程是为了完成用户任务所需要的程序的一次执行过程和为其分配资源的一个基本单位,是一个具有独立功能的程序段对某个数据集的一次执行活动。

线程作用于定义:

线程是可执行代码的可分派单元。在基于线程的多任务的环境中,所有进程有至少一个线程,但他们可以具有多个任务。这意味着单个程序可以并发执行两个或者多个任务。简而言之,线程就是把一个进程分为很多片,每一篇都可以是一个独立的流程。


线程和进程的区别:

1、  线程是进程的一部分,所以线程有的时候被称为轻权进程后者轻量级进程

2、  一个没有线程的进程是可以看成是单线程的,如果一个进程内拥有多个进程,进程的执行过程不是一条线(线程)的,而是多条线(线程)共同完成的。

3、  系统在运行的时候会为每个进程分配不同的内存区域,但是不会为线程分配内存(线程所使用的资源是它所属的进程的资源),线程只能共享资源。那就是说,除了cpu之外(线程在运行的时候要占有cpu资源),计算机内部的软硬件资源的分配与线程无关,线程只能共享它所属进程的资源

4、  与进程的控制表PCB相似,线程也有自己的控制表TCB,但是TCB中所保存的线程状态比PCB表中少多了

5、  进程是系统所有资源分配时候的一个基本单位,拥有一个完整的虚拟空间地址,并不依赖线程而独立存在。


进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程

进程与程序的区别:

 程序是一组指令的集合,它是静态的实体,没有执行的含义。而进程是一个动态的实体,有自己的生命周期。一般说来,一个进程肯定与一个程序相对应,并且只有一个,但是一个程序可以有多个进程,也可以只有一个进程。除此之外,进程还有并发性和交往性。简单地说,进程是程序的一部分,程序运行的时候会产生进程。

线程基本状态及状态之间的关系

运行、就绪、挂起、结束

线程状态。线程可以处于下列状态之一:
NEW - 至今尚未启动的线程处于这种状态。 
RUNNABLE - 正在 Java 虚拟机中执行的线程处于这种状态。 
BLOCKED - 受阻塞并等待某个监视器锁的线程处于这种状态。 
WAITING - 无限期地等待另一个线程来执行某一特定操作的线程处于这种状态。 
TIMED_WAITING - 等待另一个线程来执行取决于指定等待时间的操作的线程处于这种状态。 
TERMINATED - 已退出的线程处于这种状态。 
在给定时间点上,一个线程只能处于一种状态。这些状态是虚拟机状态,它们并没有反映所有操作系统线程状态。

线程有四种状态:新生状态、可运行状态、被阻塞状态、死亡状态。状态之间的转换如下图所示:


多线程的实现方法和同步的实现方法

多线程有两种实现方法,分别是继承Thread类与实现Runnable接口 

多线程同步和互斥有几种实现方法,都是什么?

同步的实现方面有两种,分别是synchronized,wait与notify

线程间的同步方法大体可分为两类:用户模式和内核模式。顾名思义,内核模式就是指利用系统内核对象的单一性来进行同步,使用时需要切换内核态与用户态,而用户模式就是不需要切换到内核态,只在用户态完成操作。
用户模式下的方法有:原子操作(例如一个单一的全局变量),临界区。内核模式下的方法有:事件,信号量,互斥量。


线程同步和互斥

线程同步是指线程之间所具有的一种制约关系,一个线程的执行依赖另一个线程的消息,当它没有得到另一个线程的消息时应等待,直到消息到达时才被唤醒。
线程互斥是指对于共享的进程系统资源,在各单个线程访问时的排它性。当有若干个线程都要使用某一共享资源时,任何时刻最多只允许一个线程去使用,其它要使用该资源的线程必须等待,直到占用资源者释放该资源。线程互斥可以看成是一种特殊的线程同步(下文统称为同步)




抱歉!评论已关闭.