Java程序设计 作者 刘德山 金百东 张建华 08_多线程.pptVIP

Java程序设计 作者 刘德山 金百东 张建华 08_多线程.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文档。上传文档
查看更多
计算机与信息技术学院 Java工程师系列 Java语言 程序设计 Java 语言 程序设计 主讲教师: 计算机与信息技术学院 8 多线程 8.0 本章内容 线程的概念 线程的创建 Thread类和多线程实例 线程的状态与控制 线程同步 线程通信 在线教务辅导网: 教材其余课件及动画素材请查阅在线教务辅导网 QQ:349134187 或者直接输入下面地址: 8.1 线程的概念 JAVA在语言级支持多线程,NOT OS。 分析一个涉及多个方法调用的程序的执行过程,了解一条执行线索. 思考:一个服务器端程序如何处理多个客户端的请求? 什么是线程?程序? 程序:静态的代码.(*.java) 进程:程序的动态执行过程. 线程是一个程序内的顺序控制流,使得一个程序具有能够“同时”执行多个任务的能力。 示例TestThread1.java 思考:与将循环语句写在main()方法中有什么区别? 8.1 线程的概念 线程与进程(近一步理解) 每个进程都有独立的代码和数据空间(进程上下文),进程切换的开销大,不同进程间交换数据困难。 线程: 轻量的进程,同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换的开销小。 多进程: 在操作系统中能同时运行多个任务(程序)。 多线程: 在同一应用程序中有多个顺序流同时执行。 线程可以理解为比进程更小的的程序单元。都具有并发执行多任务的能力,线程包含在进程内 线程(Thread),也称执行上下文(Execution Context)包括: 虚拟CPU 线程体(Code) 线程数据(Data) 8.1 线程的概念--- 线程模型 Java线程模型 代 码 数 据 虚拟CPU 8.2 线程的创建 Java使用Thread类描述线程对象,该类定义在java.lang包中。虚拟的CPU,由其封装。 在创建Thread对象的时候,一定要将线程体代码“提交”给线程对象。这可以从线程类构造器看出来。 Runnable接口(服务对象和客户对象之间的契约关系):只要某个对象提供了Runnable接口的实现,就可以提交给线程对象。由线程执行该接口中封装的方法:public void run(); Example CreateThread.java(涉及多种创建线程的方法) CreateThreadbyRunnable(多核) 简单线程模型/多线程模型 两种创建线程方法的比较 使用Runnable接口 可以将Thread类与所要处理的任务(CPU,代码和数据)分开,形成清晰的模型; 还可以从其他类继承; 保持程序风格的一致性。 直接继承Thread类 不能再从其他类继承; 编写简单,可以直接操纵线程,无需使用Thread.currentThread()获得当前线程。 示例:CreateThreadbyExtendsTh. java 8.3 Thread类和多线程实例 8.4 线程控制及线程状态 线程控制: 启动,start方法。 终止,正常结束及stop方法。 挂起和恢复,suspend和resume方法。 睡眠,sleep方法。 释放执行权, yield方法。 join方法 8.4 线程控制及线程状态(续) 状态描述 线程控制示例 一个模拟的计时器。 线程创建时,指定计时时间为30秒;线程运行时,每隔5秒输出一次剩余时间。 Timer1.java 通过标记变量来结束线程。 线程通过shutDown()方法将变量flag置为false来结束线程。也可以使用errupt()或t.stop()方法强制结束线程,但不推荐使用。 ThreadtInterruptedByFlag.java 8.4 线程控制及线程状态(续) 使用join()方法合并线程 一个线程调用另一个线程的join()方法可以使自已暂停运行,直至另一个线程停止,好像将两个并行执行的线程合并为一个线程。 TestJoin.java 使用yield()方法切换线程。 该方法使当前执行线程放弃CPU进入就绪状态,这样,线程调度程序可以重新分配CPU。这里存在两种情况。如果没有其他可运行的线程,该方法不起任何作用。如果有其他多个就绪线程存在,具体执行哪个线程要由具体的线程调度程序来确定. TestYIeld.java 8.4 线程控制及线程状态(续) 线程的优先级 在Java中,线程的优先级是用数字1~10来表示的,并且在Thread类中定义了3个常量。 ·static int NORM_PRIORITY=5;  ·static int MAX_PRIORITY=10; ·stati

您可能关注的文档

文档评论(0)

开心农场 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档