- 1、本文档共24页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《Java程序设计与应用开发》第10章:多线程
第十章 多线程 10.1 什么是线程 10.2 一个简单的例子 10.3定制线程类 10.4线程的生命周期 10.5线程中断 10.6线程的优先级 10.7线程同步 10.1 什么是线程 读者对顺序执行的程序已经非常熟悉,这些程序的共同特点是:有一个程序的开始、一个顺序执行指令序列和一个程序的结束点。也就是说,在程序的运行期间,只有一个单独的执行序列。 线程(Thread)与上面所描述的顺序执行程序非常的相似。一个线程在执行期间同样有一个开始,一个执行序列和一个结束点。线程是在程序中的一个单独的控制流,类似于我们以前介绍的顺序执行程序。但是在这里要特别指出的是单个线程不是一个程序,并不能依靠自身单独执行,它必须在程序中执行。 对于线程,重点是关注多线程的问题。实际上多线程非常的有用,比如说,一个服务器程序应该能同时为多个客户端提供服务;一个浏览器应该能同时浏览多个网页,或能在下载数据的同时浏览其他网页,这些都是典型的多线程的例子。 10.2 一个简单的例子-1 先来看一个我们已经非常熟悉的顺序执行的程序。(源代码请参见教材例10.2.1 ) 在该例子中,类Sequential中定义了一个run方法。run方法进行5次屏幕输出,每次输出前随机睡眠一段时间。可以发现,多次运行该程序,总是输出: AAAAABBBBB 例10.2.1是一个典型的顺序执行程序,由于new equential(“A”).run() 在new Sequential(“B”).run()之前,因此第二个run方法总是在第一个run方法之后执行,因而程序的运行结果是确定的。下面对例10.2.1稍做修改。(源代码请参见教材例10.2.2 ) 10.2 一个简单的例子-2 在MultiThreadExample的main方法中,不是直接调用MyThread的run方法,而是调用start方法: new MyThread(A).start(); new MyThread(B).start(); start方法启动一个线程,当线程被调度时,其中的run会被执行。 运行例10.2.2可以发现,每次运行都可能得到不同的结果,下面给出我们三次运行结果: BABAAABBAB BBABBBAAAA ABBBAABBAA !注意,你在运行时完全有可能得到不同的结果。 仔细观察一下程序的输出,可以发现线程A和B是交替执行的,称之为线程并发(concurrence)。 10.3定制线程类 通过阅读上一小节,可以发现:实现线程,最重要的是实现其中的run方法,run方法决定了线程所做的工作。 可以使用两种方法来为定制线程类提供run方法: 10.3.1继承线程类 10.3.2实现Runnable接口 10.3.1继承线程类 Java中有一个线程类Thread,该类中提供了run是一个空方法。为此,我们可以继承Thread,然后覆盖(override)其中的run,使得该线程能够完成特定的工作。教材例10.2.2采用的就是这种方法。 10.3.2实现Runnable接口 第二种常用的方法就是实现Runnable接口。Runnable接口中定义了唯一的方法: public void run(); 任何实现了Runnable接口的类所生成的对象均可用于创建线程对象。例如类CustomThread实现了Runnable接口,因此可以这样来创建一个线程对象: Runnable a=new CustomThread(A); Thread t=new Thread(a); 或是更简洁一点: Thread t=new Thread(new CustomThread(A)); 启动这样创建的线程,同样使用start方法: t.start();//启动线程A !从理论上讲,定制线程类可以使用上述两种方法中的任意一种。但是由于Java只支持单继承,因此,当你定制的线程类需要继承其他类时,就只能使用实现Runnable接口的方法。 10.4线程的生命周期 线程的生命周期涉及如下: 创建线程 启动线程 线程运行 线程阻塞 终止线程 图10.4.1显示了一个java线程在它生命周期中的各个状态。 10.4.1创建线程 Thread t1=new Thread(new CustomThread (A)); 用于创建一个线程对象t1。注意,该语句执行完毕后,线程对象t1处于New状态,它并没有拥有运行线程所需要的系统资源,也就是说这个时候线程还不可运行。当线程处于这N
您可能关注的文档
- 画法几何及机械制图大学考试试卷—试卷 2答案.doc
- 《Oracle_10g入门与提高》第7章:存储结构管理.ppt
- 《Oracle_10g入门与提高》第5章:SQL语言基础.ppt
- 物理光学 第四章_光的衍射2.pdf
- 物理光学 第六章_光的吸收、色散和散射3.pdf
- 物理光学 第六章__光的吸收、色散和散射.pdf
- 《Office_2003三合一自动化办公教程》第2课:Word_2003即学即会.ppt
- 微机原理课件 第二章系统结构.pdf
- 微机原理课件 第9章_并行接口.pdf
- 微机原理课件 第6章_基本输入输出接口技术.pdf
- 化学工程中学学生化工实验技能培养研究教学研究课题报告.docx
- 印度古代数学发展与现代应用教学研究课题报告.docx
- 精品解析:2024届江苏省徐州市高考考前打靶卷地理试题(解析版).docx
- 历史考察对学生历史思维能力的影响研究教学研究课题报告.docx
- 2025届全国新高考语文热点冲刺复习:议论文结构模式.pptx
- 历史课程的跨文化教学设计教学研究课题报告.docx
- 历史事件对当代政治决策的启示与借鉴教学研究课题报告.docx
- 2025届全国新高考语文热点冲刺复习2024年高考语文试题分析.pptx
- 历史事件对学生历史意识形成的影响研究教学研究课题报告.docx
- 保定学院《思想道德与法律基础》2021-2022学年期末试卷.doc
最近下载
- CD33漫反射型操作说明书中文版.pdf
- 电力牵引传动与控制.ppt
- 人教版-物理-八年级下册-71《力》习题及答案.pdf VIP
- 初中物理八年级下册力学经典习题(附解析).pdf VIP
- 2024年土地抵押借款合同范本6篇.docx
- 政治-江苏省苏州市2024-2025学年2025届高三第一学期学业期末质量阳光指标调研卷试题和答案.docx
- 国际机器人联合会(IFR):2024世界机器人报告(中文版).pdf
- 2024届高三九省联考地理:新疆联考2024届高三新高考适应性测试地理试卷(含解析).pdf VIP
- Siemens 西门子家电 洗碗机 SJ656X26JC 使用说明书_2.pdf
- 2024离婚起诉书离婚起诉状【范本】.pdf
文档评论(0)