- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2017-4-8
1
第十一章 多线程
第十一章 多线程
11.1 多线程概念
11.2 多线程的创建
11.3 线程的控制
11.4 互斥与同步
11.5 线程组
11.1 多线程基本概念
以前所编写的程序,每个程序都有一个入口、一个出口以及一个顺序执行的序列,在程序执行过程中的任何指定时刻,都只有一个单独的执行点。
事实上,在单个程序内部是可以在同一时刻进行多种运算的,这就是所谓的多线程(这与多任务的概念有相似之处)。
一个单独的线程和顺序程序相似,也有一个入口、一个出口以及一个顺序执行的序列,从概念上说,一个线程是一个程序内部的一个顺序控制流。
线程并不是程序,它自己本身并不能运行,必须在程序中运行。在一个程序中可以实现多个线程,这些线程同时运行,完成不同的功能。
3
程序、进程与线程
“程序”(Program)是保存在存储设备上的文件;
“进程”(Process)是正在计算机中执行的程序;
线程(Thread)是进程中某个单一顺序的控制流或者一条执行路径。
多线程基本概念
5
多线程基本概念
从逻辑的观点来看,多线程意味着一个程序的多行语句同时执行,但是多线程并不等于多次启动一个程序,操作系统也不会把每个线程当作独立的进程来对待:
两者的粒度不同,是两个不同层次上的概念。进程是由操作系统来管理的,而线程则是在一个程序(进程)内,不同进程的代码、内部数据和状态都是完全独立的,而一个程序内的多线程是共享同一块内存空间和同一组系统资源,有可能互相影响。
线程本身的数据通常只有寄存器数据,以及一个程序执行时使用的堆栈,所以线程的切换比进程切换的负担要小。
2017-4-8
6
多线程基本概念
7
文件
输入输出装置
各种系统资源
数据区段
程序区段
只有一个地方在执行
文件
输入输出装置
各种系统资源
程序区段
同时有数个地方在执行
传统的进程
多线程的任务
多线程的优势
用户可以获得更好交互。
两个线程的切换时间少。
由于同一个进程内的线程共享内存和文件,所以线程之间互相通信必须调用内核。
线程能独立执行,能充分利用和发挥处理机与外围设备并行工作的能力。
可以利用多处理器。
可以简化对象模型。
8
多线程示例
多线程示例
2017-4-8
11
11.2 线程的创建
11.2.1 通过扩展Thread类创建线程
11.2.2 通过实现Runnable接口创建线程
在JAVA语言中实现多线程编程方法有两种途径,分别是:继承Thread类和实现Runnable接口。线程的行为由线程体决定,线程体由run()方法定义,运行系统通过调用该方法实现线程的具体行为。
创建线程的方式
13
Java的线程是通过Java的软件包Java.lang中定义的类Thread来实现的。当生成一个Thread类的对象之后,就产生了一个线程,通过该对象实例,可以启动线程、终止线程、或者暂时挂起它等。
Thread类本身只是线程的虚拟CPU,线程所执行的代码(或者说线程所要完成的功能)是通过方法run()(包含在一个特定的对象中)来完成的,方法run()称为线程体。实现线程体的特定对象是在初始化线程时传递给线程的。在一个线程被建立并初始化以后,Java的运行时系统就自动调用run( )方法,正是通过run( )方法才使得建立线程的目的得以实现。
通常,run( )方法是一个循环,例如一个播放动画的线程要循环显示一系列图片。有时,run( )方法会执行一个时间较长的操作,例如下载并播放一个JPEG格式的电影。
11.2.1 通过扩展Thread类创建线程
14
定义一个线程类,它继承类Thread并重写其中的方法run()。这时在初始化这个类的实例时,目标对象target可以为null,表示这个实例本身具有线程体。由于Java只支持单继承,用这种方法定义的类不能再继承其他类。
Thread类提供的构造方法
Thread类提供了7种重载的构造方法,分别是:
Public Thread()
Public Thread(Runnable target)
Public Thread(RUnnable target, String name)
Public Thread(String name)
Public Thread(ThreadGroup group, Runnable target)
Public Thread(ThreadGroup group, String name)
Public Thread(ThreadGroup group, Runnable taget, String name)
创建线程的方式
16
先来看看线程对象的初始化,类Thread的构造方
您可能关注的文档
最近下载
- 新标准大学英语视听说教程2第三版智慧版文秋芳课后习题答案解析.pdf
- 创业基础(暨南大学) 中国大学MOOC 2021年期末考试 答案.docx VIP
- 人教版初中数学七年级上册《综合设计与实践 设计学校田径运动会比赛场地.pptx VIP
- 智能制造装备技术专业群组群逻辑.docx VIP
- 13第13章城市总体规划.ppt
- 桃源果蔬批发区域场新建工程施工招标.doc VIP
- 5.1《展示国家工程 了解工匠贡献》优秀比赛课件.pptx VIP
- 整本书阅读《乡土中国》差序格局 课件 2024-2025学年统编版高中语文必修上册.pptx VIP
- 2025校外培训机构事故隐患内部报告奖励管理制度.docx
- 胃造瘘护理课件.pptx VIP
原创力文档


文档评论(0)