Java程序设计基础 作者 万忠 苏飞 第09章.pptVIP

Java程序设计基础 作者 万忠 苏飞 第09章.ppt

  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文档。上传文档
查看更多
第 9 章 多 线 程 9.1 创 建 和 使 用 线 程 9.2 线 程 的 调 度 9.3 join(?)方法 9.4 sleep(?)方法 9.5 线 程 同 步 9.6 线 程 交 互 9.1 创 建 和 使 用 线 程 Tread类实现了Runnable接口,在Runnable接口中定义了线程代码所在的方法run(?)。 在Java中有两种定义线程类的方式: (1)继承Thread 类,并覆盖线程类的run(?) 方法,例如: class MyThread extends Tread{ public void run( ){ //线程代码 } } (2)实现java.lang.Runable接口,并实现其run(?)方法。例如: class MyRunnable implements Runnable{ public viod run( ){ //线程代码 } } 创建线程实例之后,使用Thread类的start方法启动线程 。 Thread类中定义了几个常用的方法: ? public static Thread currentThread(?) ? public final String getName(?) ? public final void setName(String?name) ? public final int getPriority(?) ? public final void setPriority(int?newPriority) ? public final boolean isAlive(?) 9.2 线 程 的 调 度 9.2.1 线程的状态 在一个线程对象从创建到死亡之间可能会经历很多种状态,其中主要有4种状态,如图9-1所示。 9.2.2 线程优先级 线程优先级表明了线程的重要程度,虚拟机根据优先级使比较重要的线程有更多的执行机会。优先级机制可以使当前正在执行的线程成为可运行线程中优先级最高的线程。 线程的优先级在1(最小)和10(最大)之间,默认值为5(Normal),主线程一般为默认值5。 9.2.3 yield( )方法 调用Thread类的静态方法yield(?)使当前执行线程返回到可执行状态,虚拟机将从可运行线程中重新选择优先级最高的线程执行。 在不确定是否调度算法使用了时间片机制的时候,使用yield(?)方法,可强制正在执行的线程回到可执行状态,可以使与正在运行的线程同优先级的线程有机会被调度。 9.2.4 线程阻塞 阻塞状态是线程的一种特殊状态,在线程执行需要的某些条件不满足或需要等待其他线程执行时,能够将正在执行的线程转到阻塞状态,呈阻塞状态的线程不参与调度。 9.3 join(?)方法 Thread类的非静态join(?)方法由线程对象调用,它使当前正在执行的线程进入阻塞状态,直到调用join(?)方法的线程对象死亡后,才能回到可执行状态,并被重新调度执行。其调用格式为: 线程对象.join(?); 或 线程对象.join(毫秒数); 如果一个线程需要等待另一线程的执行结果,可以使用join(?)方法,让另一线程在本线程之前执行。 9.4 sleep(?)方法 如果想让程序公平地运行,应该使用sleep(?)方法。sleep(?)方法是Thread类中定义的静态方法,其调用格式为: Thread.sleep(毫秒数); 9.5 线 程 同 步 9.5.1 同步方法 同步机制就是在定义共享对象的类时,给访问共享数据(域)的方法加上同步关键字(synchonized)。 所有包含同步方法的对象都拥有惟一的一个对象锁,一个线程执行共享对象的同步方法,必须先获得这个对象锁,获得锁后才能执行同步方法,同步方法执行结束后线程将放弃对象的锁。这样同一时刻只有一个要执行共享对象同步方法的线程拥有这个共享对象的锁,所以同一时刻只有一个线程能够执行共享对象的同步方法。 9.5.2 同步块 不必将一个方法中的所有代码定义为同步,而只将方法中需要的一部分代码定义为同步代码。这样做需要使用同步块,同步块的格式为: synchronized(共享对象){ //访问共享对象代码 } 9.5.3 死 锁 两个线程都进入阻塞状态不能恢复,

您可能关注的文档

文档评论(0)

118压缩包课件库 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档