- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第9章 多线程 9.1 进?程?与?线?程 进程是程序的一次动态执行过程,它经历了从代码加载、执行到执行完毕的一个完整过程。这个过程也是进程本身从产生、发展到最终消亡的过程。多进程操作系统能同时运行多个进程(程序),由于CPU具备分时机制,所以每个进程都能循环获得自己的CPU时间片。由于CPU执行速度非常快,使得所有程序好像是在“同时”运行一样。 线程是比进程更小的执行单位,线程是进程内部单一的一个顺序控制流。所谓多线程,是指一个进程在执行过程中可以产生多个线程,这些线程可以同时存在、同时运行,形成多条执行线索。一个进程可能包含了多个同时执行的线程。多线程是实现并发机制的一种有效手段。进程和线程一样,都是实现并发的一个基本单位。 线程和进程的主要差别体现在以下两个方面: (1) 同样作为基本的执行单元,线程是划分得比进程更小的执行单位。 (2) 每个进程都有一段专用的内存区域。与此相反,线程却共享内存单元(包括代码和数据),通过共享的内存单元来实现数据交换、实时通信与必要的同步操作。 多线程的应用范围很广。在一般情况下,程序的某些部分同特定的事件或资源联系在一起,同时又不想为它暂停程序其他部分的执行,在这种情况下,就可以考虑创建一个线程,令它与那个事件或资源关联到一起,并让其独立于主程序运行。通过使用线程,可以避免用户在运行程序和得到结果之间停顿,还可以让一些任务(如打印任务)在后台运行,用户则在前台继续完成其他工作。总之,利用多线程技术,编程人员可以方便地开发出能同时处理多个任务的功能强大的应用程序。 9.2 认 识 线 程 在传统的程序语言中,运行的顺序总是必须顺着程序的流程来走,遇到if-else语句就加以判断,遇到for、while等循环会多绕几个圈,最后程序还是按着一定的程序走,且一次只能运行一个程序块。Java的“多线程”打破了这种传统的束缚。例如,有些包含循环的线程可能要使用比较长的一段时间来运算,此时便可让另一个线程来做其他处理。本节将用一个简单的程序来说明单一线程与多线程的区别。ThreadDemo9_1是单一线程的范例,其程序代码编写方法与前几节的程序代码并没有什么不同。 【例9-1】 ThreadDemo9_1.java。 程序说明: (1) 第15~21行定义了run()方法,用循环输出10个连续的字符串。 (2) 第5行创建TestThread对象之后调用run()方法,输出“TestThread在运行”,最后执行main()方法中的循环,输出“main线程在运行”。 从本例中可看出,要想运行main()方法中的循环,必须要等TestThread类中的run()方法执行完之后才可以运行,这便是单一线程的缺陷。在Java中,是否可以同时运行第9行与第19行的语句,使得“main线程在运行”和“TestThread在运行”交错输出呢?答案是肯定的,其方法是:在Java中激活 多个线程。那么,该如何激活线程呢?如果在类里要激活线程,必须先做好下面两个准备: (1) 线程必须扩展自Thread类,使自己成为它的子类。 (2) 线程的处理必须编写在run()方法内。9.2.1 通过继承Thread类实现多线程 Thread存放在java.lang类库中,但并不需加载java.lang类库,因为它会自动加载。此外,run()方法是定义在Thread类中的一个方法,因此把线程的程序代码编写在run()方法内,事实上所做的就是覆盖操作。因此要使一个类可激活线程,必须按照下面的语法来编写: 从运行结果中可以发现,两行输出是交替进行的。也就是说,程序是采用多线程机制运行的。与之前的程序相比,修改后的程序第13行TestThread类继承了Thread类,第5行调用的不再是run()方法,而是start()方法。所以,要启动线程,必须调用Thread类之中的start()方法,而调用了start()方法,也就是调用了run()方法。9.2.2 通过实现Runnable接口实现多线程 Java程序只允许单一继承,即一个子类只能有一个父类,所以在Java中如果一个类继承了某一个类,同时又想采用多线程技术,就不能用Thread类产生线程,因为Java不允许多继承,这时就要用Runnable接口来创建线程。 程序说明: (1) 第5行实例化一个TestThread类的对象。 (2) 第6行通过TestThread类(Runnable接口的子类)去实例化一个Thread类的对象,之后调用start()方法启动多线程。 (3) 第14行TestThread类实现了Runnable接口,同时复写了Runnable接
您可能关注的文档
- Internet技术及其应用教程资源 作者 陈耀溪 第1-7章 第5章.ppt
- Internet技术及其应用教程资源 作者 陈耀溪 第1-7章 第6章.ppt
- Internet技术及其应用教程资源 作者 陈耀溪 第1-7章 第7章.ppt
- Internet技术及其应用教程资源 作者 陈耀溪 第8-12章 第9章.ppt
- Internet技术及其应用教程资源 作者 陈耀溪 第8-12章 第12章.ppt
- Internet简明教程(第四版 作者 第01章 Internet基础知识.ppt
- Internet简明教程(第四版 作者 第02章 将计算机连接到Internet.ppt
- Internet简明教程(第四版 作者 第03章 使用Internet Explorer浏览器浏览Internet内容.ppt
- Internet简明教程(第四版 作者 第04章 使用搜索引擎查询信息.ppt
- Internet简明教程(第四版 作者 第05章 电子邮件收发与管理.ppt
- Java程序案例教程 作者 高职 田智 第6-13章_ 第11章.ppt
- Java程序案例教程 作者 高职 田智 第6-13章_ 第12章.ppt
- Java程序案例教程 作者 高职 田智 第6-13章_ 第13章.ppt
- Java程序设计教程 作者 978-7-302-18214-6 第3章-Java程序基础.ppt
- Java程序设计教程 作者 978-7-302-18214-6 第4章-Java程序流程控制.ppt
- Java程序设计教程 作者 978-7-302-18214-6 第6章-面向对象程序设计.ppt
- Java程序设计教程 作者 978-7-302-18214-6 第10章-HTML基础.ppt
- Java程序设计教程 作者 978-7-302-18214-6 第11章-图形用户界面.ppt
- Java程序设计教程 作者 978-7-302-18214-6 第12章-Java输入输出.ppt
- Java程序设计教程 作者 曾令明 1-6 第2章.ppt
文档评论(0)