
Thread的比较
进程是资源分配的基本单位。所有与该进程有关的资源,都被记录在进程控制块PCB中。以表示该进程拥有这些资源或正在使用它们。另外,进程也是抢占处理机的调度单位,它拥有一个完整的虚拟地址空间。与进程相对应,线程与资源分配无关,它属于某一个进程,并与进程内的其他线程一起共享进程的资源。 当进程发生调度时,不同的进程拥有不同的虚拟地址空间,而同一进程内的不同线程共享同一地址空间。 线程只由相关堆栈(系统栈或用户栈)寄存器和线程控制表TCB组成。寄存器可被用来存储线程内的局部变量,但不能存储其他线程的相关变量。 发生进程切换与发生线程切换时相比较,进程切换时涉及到有关资源指针的保存以及地址空间的变化等问题;线程切换时,由于相同进程内的线程共享资源和地址 空间,将不涉及资源信息的保存和地址变化问题,从而减少了操作系统的开销时间。而且,进程的调度与切换都是由操作系统内核完成,而线程则既可由操作系统内 核完成,也可由用户程序进行。
图1多线程与进程之间的关系五、线程的适用范围 典型的应用 1.服务器中的文件管理或通信控制 2.前后台处理 3.异步处理六、线程的执行特性 一个线程必须处于如下四种可能的??一个线程调用了new方法之后,并在调用start方法之前的所处状态。在初始态中,可以调用start和stop方法。Runnable:一旦线程调用了start 方法,线程就转到Runnable 状态,注意,如果线程处于Runnable状态,它也有可能不在运行,这是因为还有优先级和调度问题。阻塞/ NonRunnable:线程处于阻塞/NonRunnable状态,这是由两种可能性造成的:要么是因挂起而暂停的,要么是由于某些原因而阻塞的,例如包括等待IO请求的完成。退出:线程转到退出状态,这有两种可能性,要么是run方法执行结束,要么是调用了stop方法。最后一个概念就是线程的优先级,线程可以设定优先级,高优先级的线程可以安排在低优先级线程之前完成。一个应用程序可以通过使用线程中的方法setPriority(int),来设置线程的优先级大小。线程有5种基本操作: 派生:线程在进程内派生出来,它即可由进程派生,也可由线程派生。 阻塞(Block):如果一个线程在执行过程中需要等待某个事件发生,则被阻塞。 激活(unblock):如果阻塞线程的事件发生,则该线程被激活并进入就绪队列。 调度(schedule):选择一个就绪线程进入执行状态。 结束(Finish):如果一个线程执行结束,它的寄存器上下文以及堆栈内容等将被释放。图2 线程的状态与操作 线程的另一个执行特性是同步。线程中所使用的同步控制机制与进程中所使用的同步控制机制相同。

2023-06-12 广告