- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第10章 多线程编程 10.1 线?程?的?概?念 10.1.2 进程与线程 尽管进程的出现成为计算机系统的一个重大进步,但也存在缺点。每调度一个进程,都要将其上次被执行的情况恢复到CPU和寄存器中,由于每个进程都有自己的数据段、栈段和代码段,这样恢复现场工作需要占用大量系统资源,因此,进程调度对操作系统而言是一种开销很大的工作。然而,并不是每一步工作都需要这样“大动干戈”,一次进程调度可能只是其中很小的一部分代码被分开执行,其使用的数据段和代码段差别很小,因此,过于频繁和没有必要的进程调度是影响操作系统工作效率的一个重要因素。随着技术的发展和人们对计算机系统理解的加深,开始逐渐出现了解决这一问题的方法,即使用线程。这样,一个进程就可能同时为用户做多件事了。例如,一个Hotjava的浏览器,它在下载一些图片的同时,也能供用户浏览已经下载下来的页面部分,这就是通过线程机制为用户服务的典型例子。 10.1.3 线程的结构 线程的基本结构如图10-1所示。它包含三个主要部分,第一是虚拟CPU本身,第二是CPU执行的代码即Code,第三是代码操作的数据即Data。在Java中虚拟CPU体现于Thread类中。当一个线程被构造时,它由构造方法参数、执行代码、操作数据来初始化。应该特别注意的是,这三方面是各自独立的。一个线程所执行的代码与其他线程可以相同也可以不同,一个线程访问的数据与其他线程可以相同也可以不同。 图10-1 线程的基本结构 10.2 Thread类与Runnable接口 10.2.1 Thread类 Thread类支持新线程。它实现了Runnable接口,所以读者不需要自己实现Runnable接口。 1.构造函数 (1) Thread():构造一个新的Thread对象。 (2) Thread(Runnable target):使用Runnable对象构造一个新的Thread对象。 (3) ?Thread(String name):使用名字构造一个新的Thread对象。 2.其他的方法 (1) void start():使线程开始,也就是说,Java虚拟机将调用线程的run()方法。 (2) void run():用来定义线程对象被调度之后所执行的操作。在系统的Thread类中,run()方法没有具体内容,用户创建自己的Thread类的子类,需要重写run()方法。 (3) Static void sleep(long millis):当前的线程暂停指示的毫秒数。 (4) ?Static void sleep(long millis,int nanos):当前执行线程暂停指示的毫秒数加上指示的纳秒数。 注意:sleep()方法为Thread的静态方法,这意味着这个方法可以用类名、方法名使用它。当调用sleep()时,处理器会使当前线程休眠并运行另一个线程,直到休眠时间截止时唤醒休眠的线程。然而,也有可能某些线程会中断正在休眠的线程,这时,处理器会提前唤醒休眠的线程,而sleep()方法会抛出InterruptedException对象代替正常返回。 【例10-1】线程使用示例。 import java.applet.*; import java.awt.*; import java.awt.event.*; public class ThreadTest1 extends Applet implements ActionListener { Toolkit toolkit; Button button; public void init() { toolkit=getToolkit(); //获得一个工具包对象,工具包中含有发声的beep()方法 button=new Button(确定); add(button); button.addActionListener(this); } public void actionPerformed(ActionEvent e) { if(e.getSource()==button) { for(int i=0;i=9;i++) { toolkit.beep(); try { Thread.sleep(500); }catch(InterruptedException e1) {} } } } } 图10-2 例10-1运行结果 10.2.2 Runnable接口 由于Java中
您可能关注的文档
- Internet简明教程(第四版 作者 第10章 Internet的网络共享解决方案.ppt
- Internet简明教程(第五版) 作者 978-7-302-17512-4 01.ppt
- Internet简明教程(第五版) 作者 978-7-302-17512-4 03.ppt
- Internet简明教程(第五版) 作者 978-7-302-17512-4 06.ppt
- Internet简明教程(第五版) 作者 978-7-302-17512-4 07.ppt
- Internet简明教程(第五版) 作者 978-7-302-17512-4 08.ppt
- Internet简明教程(第五版) 作者 978-7-302-17512-4 09.ppt
- Internet宽带共享与网络服务器搭建PowerPoint课件 作者 第01章 Internet基础知识.ppt
- Internet宽带共享与网络服务器搭建PowerPoint课件 作者 第02章 共享Internet接入.ppt
- Internet宽带共享与网络服务器搭建PowerPoint课件 作者 第03章 动态DNS解析.ppt
- Java程序设计教程 作者 曾令明 7-11 第11章.ppt
- JAVA程序设计教程 作者 赵莉 第1-6章 第2章.ppt
- JAVA程序设计教程 作者 赵莉 第1-6章 第3章.ppt
- JAVA程序设计教程 作者 赵莉 第1-6章 第4章.ppt
- JAVA程序设计教程 作者 赵莉 第1-6章 第5章.ppt
- JAVA程序设计教程 作者 赵莉 第1-6章 第6章.ppt
- JAVA程序设计教程 作者 赵莉 第7-11章 第10章.ppt
- JAVA程序设计教程 作者 赵莉 第7-11章 第11章.ppt
- Java程序设计实训教程 作者 978-7-302-27535-0 第1章 概述 第1章 概述.ppt
- Java程序设计实训教程 作者 978-7-302-27535-0 第3章 面向对象程序设计(上) 第3章 面向对象程序设计(上).ppt
最近下载
- 防腐、保温施工方案.docx VIP
- (完整版)沟槽开挖及支护专项施工方案(深基坑专家论证).doc
- 4.1 水循环(教案)2023-2024学年湘教版(2019)高中地理必修一.docx VIP
- EIM Book 1 Unit 1 Free time单元检测试题.pdf VIP
- 金风1.5MW型风机变流器断路器反馈丢失故障作业指导书.docx VIP
- 信息与通信技术产品供应链安全测试方法.docx VIP
- 高中必备成语及解释800个.docx VIP
- 公差配合与测量技术 第2版 项目三 千分尺与指示表的测量操作.pptx VIP
- 金风1.5MW型风机主控柜断路器状态反馈丢失故障作业指导书.docx VIP
- 第2课学会沟通交流(教学课件) 道德与法治统编版五年级上册.ppt
文档评论(0)