- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第16章线程概要
第16章 线程 在Java程序设计语言中,并发程序主要集中于线程。随着越来越多的计算机系统拥有多个处理器或带有多个执行内核,线程的系统能力也得到了极大的增强。多线程编程是提高应用程序性能的重要手段。 16.1 线程概念 有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。 线程是程序中一个单一的顺序控制流程。在单个程序中同时运行多个线程完成不同的工作,称为多线程。 16.1.1 线程的属性 1.轻型实体 线程中的实体基本上不拥有系统资源,只是有一点必不可少的、能保证独立运行的资源,比如,在每个线程中都应具有一个用于控制线程运行的线程控制块TCB,用于指示被执行指令序列的程序计数器、保留局部变量、少数状态参数和返回地址等的一组寄存器和堆栈。 2.独立调度和分派的基本单位 在多线程OS中,线程是能独立运行的基本单位,因而也是独立调度和分派的基本单位。由于线程很“轻”,故线程的切换非常迅速且开销小。 3.可并发执行 在一个进程中的多个线程之间,可以并发执行,甚至允许在一个进程中所有线程都能并发执行;同样,不同进程中的线程也能并发执行。 4.共享进程资源 在同一进程中的各个线程,都可以共享该进程所拥有的资源,这首先表现在:所有线程都具有相同的地址空间(进程的地址空间),这意味着,线程可以访问该地址空间的每一个虚地址;此外,还可以访问进程所拥有的已打开文件、定时器、信号量机构等。 16.1.2 线程的组成 线程的组成有以下部分: ????1 一组代表处理器状态的CPU寄存器中的内容 2 两个栈,一个用于当线程在内核模式下执行的时候,另一个用于线程在用户模式下执行的时候 ??3 一个被称为线程局部存储器(TLS,thread-local storage)的私有储存区域,各个子系统、运行库和DLL都会用到该储存区域 ? 4 一个被称为线程ID(thread ID,线程标识符)的唯一标识符(在内部也被称为客户ID——进程ID和线程ID是在同一个名字空间中生产的,所以它们永远 不会重叠) 5 有时候线程也有它们自己的安全环境,如果多线程服务器应用程序要模仿其客户的安全环境,则往往可以利用线程的安全环境。 16.1.3 线程工作原理 线程有5种基本操作: 1.派生:线程在进程内派生出来,它即可由进程派生,也可由线程派生。 2.阻塞(Block):如果一个线程在执行过程中需要等待某个事件发生,则被阻塞。 3.发送串口数据 4.接收串口数据 4.接收串口数据 16.1.4 线程的状态 1.新线程态(New Thread) 产生一个Thread对象就生成一个新线程。当线程处于新线程状态时,仅仅是一个空线程对象,它还没有分配到系统资源。因此只能启动或终止它。任何其他操作都会引发异常。 2.可运行态(Runnable) start()方法产生运行线程所必须的资源,调度线程执行,并且调用线程的run()方法。在这时线程处于可运行态。该状态不称为运行态是因为这时的线程并不总是一直占用处理机。 3.非运行态(Not Runnable) 当suspend()方法被调用、sleep()方法被调用、线程使用wait()来等待条件变量和线程处于I/O等待事件发生时,线程进入非运行态。 4.死亡态(Dead) 当run()方法返回,或别的线程调用stop()方法,线程进入死亡态 。通常Applet使用它的stop()方法来终止它产生的所有线程。 16.1.5 线程的优先级 虽然我们说线程是并发运行的。然而事实常常并非如此。正如前面谈到的,当系统中只有一个CPU时,以某种顺序在单CPU情况下执行多线程被称为调度(scheduling)。Java采用的是一种简单、固定的调度法,即固定优先级调度。这种算法是根据处于可运行态线程的相对优先级来实行调度。当线程产生时,它继承原线程的优先级。在需要时可对优先级进行修改。在任何时刻,如果有多条线程等待运行,系统选择优先级最高的可运行线程运行。只有当它停止、自动放弃、或由于某种原因成为非运行态低优先级的线程才能运行。如果两个线程具有相同的优先级,它们将被交替地运行。 16.1.6 进程的概念 进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时,它才能成为一个活动的实体,我们称其为进程。 16.1.7 线程和进程的区别 线程与进程的区别
您可能关注的文档
最近下载
- 县城排水防涝提升改道工程监理细则.docx VIP
- 新版DFMEA&PFMEA表格模板.xlsx VIP
- 人教版高中物理必修第三册精品课件 第9章 静电场及其应用 专题提升二非点电荷电场强度的求解、电场线和轨迹问题.ppt VIP
- 创伤性休克的治疗 治疗创伤性休克的偏方 如何治疗创伤性休克.doc VIP
- 全国职业大赛(中职)ZZ032建筑信息模型建模赛题第9套.docx VIP
- 医共体综合服务能力提升建设项目可行性研究报告.docx
- GB_T 1348—2019《球墨铸铁件》标准解读.pdf VIP
- 三溴化硼BBr3.doc VIP
- 西安地铁丰庆路基坑围护结构施工方案设计.doc
- 高一【美术(人美版)】抒情与写意——文人画-课件.pptx VIP
文档评论(0)