- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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
您可能关注的文档
- EDA技术实用教程(第二版) 作者 潘松 黄继业 第2版 第8章_VHDL结构与要素.ppt
- EDA技术实用教程(第二版) 作者 潘松 黄继业 第2版 第9章_VHDL基本语句.ppt
- EDA技术实用教程(第二版) 作者 潘松 黄继业 第2版 第10章_设计优化和设计方法.ppt
- EDA技术实用教程—Verilog_HDL版(第四版) 作者 潘松 黄继业 潘明 第2章 FPGA与CPLD的结构原理.ppt
- EDA技术实用教程—Verilog_HDL版(第四版) 作者 潘松 黄继业 潘明 第3章 Verilog设计入门.ppt
- EDA技术实用教程—Verilog_HDL版(第四版) 作者 潘松 黄继业 潘明 第4章 EDA工具应用初步.ppt
- EDA技术实用教程—Verilog_HDL版(第四版) 作者 潘松 黄继业 潘明 第5章 Verilog设计深入.ppt
- EDA技术实用教程—Verilog_HDL版(第四版) 作者 潘松 黄继业 潘明 第6章 EDA工具应用深入.ppt
- EDA技术实用教程—Verilog_HDL版(第四版) 作者 潘松 黄继业 潘明 第8章 有限状态机设计技术.ppt
- EDA技术实用教程—Verilog_HDL版(第四版) 作者 潘松 黄继业 潘明 第9章 Verilog 语言规则.ppt
- Java程序设计 作者 刘德山 金百东 张建华 09_输入输出及文件操作.ppt
- Java程序设计 作者 刘德山 金百东 张建华 10_图形用户界面.ppt
- Java程序设计 作者 欧阳江林 主编 汪志达 马荣飞 副主编 第1章Java基础.ppt
- Java程序设计 作者 欧阳江林 主编 汪志达 马荣飞 副主编 第2章 Java面向对象编程基础.ppt
- Java程序设计 作者 欧阳江林 主编 汪志达 马荣飞 副主编 第3章 常用工具.ppt
- Java程序设计 作者 欧阳江林 主编 汪志达 马荣飞 副主编 第5章Java网络程序设计及相关技术.ppt
- Java程序设计 作者 欧阳江林 主编 汪志达 马荣飞 副主编 第6章 J2ME无线应用编程.ppt
- Java程序设计 作者 欧阳江林 主编 汪志达 马荣飞 副主编 第7章 Java数据库编程.ppt
- Java程序设计及应用开发教程 作者 虞益诚 主编 第1章Java概述.ppt
- Java程序设计及应用开发教程 作者 虞益诚 主编 第2章Java语言基础.ppt
原创力文档


文档评论(0)