Java面向对象程序设计 赵生慧 课件12.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
教学目标 理解多线程程序设计的基本思想 掌握多线程的实现和线程的同步与控制 理解Java网络编程的基本思想 掌握基于Socket的低层Java网络编程与基于UDP的Java网络编程,以及基于无连接的数据报通信编程 理解JDBC的基本思想 掌握数据源的建立和数据库的访问 多线程程序设计 Java是支持多线程的语言之一。 Java的多线程可以弥补有些程序设计语言只能运行单一程序块,无法同时运行程序内不同块的缺憾。 Java可以让不同的程序块同时运行,可以达到处理多任务的目的。 在单线程的程序设计语言里,运行的程序总是必须顺着程序的流程走,遇到if-else语句就进行判断,遇到for、while等循环就多绕几个圈,最后程序还是按着一定的顺序走,且一次只能运行一个程序块。 多线程的概念 Java语言的多线程(multi-thread)改变了这个规则。所谓的线程(thread)是指程序的运行流程,多线程的技术使单个程序内部也可以在同一时刻执行多个代码段,完成不同的任务,这种机制称为多线程。 Java语言利用多线程实现了一个异步的执行环境。例如,在一个网络应用程序里,可以在后台运行一个下载网络数据的线程,在前台则运行一个线程来显示当前下载的进度,以及一个用于处理用户输入数据的线程。多线程使程序运行的效率得到了提高,也克服了单线程程序语言所无法设计的问题。 Java多线程机制是通过Java类包java.lang中的类Thread实现的,Thread类封装了对线程控制所必需的方法。线程的实例化对象定义了很多方法用来控制一个线程的行为. 单线程的实现示例 单线程的实现示例(续) 运行结果: B:早饭 B:上班 B:下班 S:备课 S:上课 S:布置作业 S:下课 单线程的实现示例(续) 程序分析: 本例是单线程的范例,在类BT中定义了run()方法,用循环输出4个连续的字符串。try块中sleep()方法只是简单地告诉线程休息多少毫秒,其参数为休息时间。当这个时间过去后,线程即可继续执行。当某个线程睡眠时,sleep()并不占用系统资源,其他某一线程可继续工作。main()方法中分别创建了s1与s2对象之后,各自调用run()方法,分别输出4行信息 多线程的实现 从上例可看出,要运行s2.run()方法,一定要等到s1.run()运行完毕才行,这便是单线程的限制。在Java里,是否可以同时运行s1.run()、s2.run()方法使得上述结果交叉输出呢?当然可以,就是在Java程序中激活多个线程。 如果在类里激活线程,必须满足下面两个条件: 1.此类必须是扩展自Thread类,使自己成为它的子类 2.线程的处理必须编写在run()方法内。 Thread类存放在java.lang类库中,因此不需要加载。此外,run()方法是定义在Thread类中的一个方法,因此把线程的程序代码编写在run()方法内,事实上就是第6章所讲的覆盖操作。 多线程的实现示例 多线程的实现示例(续) 运行结果: 第一次运行 第二次运行 第三次运行 B:起床 B:起床 B:起床 S:备课 S:备课 S:备课 S:上课 B:早饭 S:上课 S:布置作 S:上课 B:早饭 B:早饭 B:上班 B:上班 S:下课 S:布置作业 B:下班 B:上班 B:下班 S:布置作业 S:下班 S:下课 S:下课 多线程的实现示例(续) 程序分析: 程序中的main()方法中构造了两个ST类的线程,一个称为“B”线程,另一个称为“S”线程,并调用了start()方法来启动这两个线程。可以看到,在3次输出结果中两个线程的运行是交叉在一起的,没有确定的顺序可寻,这是因为这两个线程同时运行,并且同时显示输出,且这两个线程的输出次序是随机的。 使用接口实现多线程 前面介绍了如何用类Thread的方式来创建线程。但是如果类本身已经继承了某个父类,现在又要继承Thread类来创建线程,就违背了Java不支持多继承的原则,解决这个问题的方法是使用接口。多线程中就是实现接口Runnable。Runnable接口里声明了抽象的run()?方法,因此只要在类里实现run()方法,也就是把处理线程的程序代码放在run()里就可以创建线程了。 多线程的实现示例2 例12.3 创建一个程序实现当前时间显示,要求每2秒显示1次,显示20次后程序退出。 分析: 在Java的java.util包中有一个Date类,可以通过实例化一个Date对象得到当前时间。要求每两秒显示一次时间,线程是完成这个任务最好的角色。通

文档评论(0)

1243595614 + 关注
实名认证
文档贡献者

文档有任何问题,请私信留言,会第一时间解决。

版权声明书
用户编号:7043023136000000

1亿VIP精品文档

相关文档