Java语言程序设计5-5-java第11章(多线程程序设计[线程状态-线程的生命周期]).ppt

上传人:s****8 文档编号:69445836 上传时间:2023-01-04 格式:PPT 页数:22 大小:262.50KB
返回 下载 相关 举报
Java语言程序设计5-5-java第11章(多线程程序设计[线程状态-线程的生命周期]).ppt_第1页
第1页 / 共22页
Java语言程序设计5-5-java第11章(多线程程序设计[线程状态-线程的生命周期]).ppt_第2页
第2页 / 共22页
点击查看更多>>
资源描述

《Java语言程序设计5-5-java第11章(多线程程序设计[线程状态-线程的生命周期]).ppt》由会员分享,可在线阅读,更多相关《Java语言程序设计5-5-java第11章(多线程程序设计[线程状态-线程的生命周期]).ppt(22页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、褚龙现褚龙现第十一章第十一章 多线程程序设计多线程程序设计软件学院回顾回顾编程规范编程规范程序调试程序调试文档注释文档注释软件学院回顾回顾 Java的编程规范的编程规范指导方针是要求确实所需要的,例指导方针是要求确实所需要的,例如增加可读性如增加可读性没有标准可以做到完美无缺,也没有没有标准可以做到完美无缺,也没有标准可以做到适用于所有的应用标准可以做到适用于所有的应用指导方针一般是为了指导方针一般是为了:增加可读性、程增加可读性、程序的可理解性,从而提高程序的可维序的可理解性,从而提高程序的可维护性以及程序代码质量护性以及程序代码质量软件学院回顾回顾程序调试程序调试第一种格式第一种格式ass

2、ert 布尔表达式布尔表达式;当表达式的值为当表达式的值为false并且并且assert语语句起作用时,引起一个断言错误句起作用时,引起一个断言错误 AssertionError软件学院回顾回顾 程序调试程序调试第二种格式第二种格式assert 布尔表达式布尔表达式:字符串字符串;当表达式的值为当表达式的值为false并且并且assert语语句起作用时,引起一个断言错误句起作用时,引起一个断言错误,同时会显示给定字符串的内容。同时会显示给定字符串的内容。软件学院教学内容和目标教学内容和目标多线程程序设计方法多线程程序设计方法线程生命周期线程生命周期软件学院教学重难点教学重难点重点重点掌握多线程

3、程序设计的基本方法掌握多线程程序设计的基本方法难点难点多线程程序运行周期多线程程序运行周期软件学院11.1 线程线程一个线程就是一段连续执行的程序一个线程就是一段连续执行的程序连续执行的含义:连续执行的含义:程序从起始点开始运行程序从起始点开始运行每次执行一条语句每次执行一条语句语句可能有条件判断、循环、函数,但每语句可能有条件判断、循环、函数,但每次只有一条语句在执行次只有一条语句在执行程序最后在终点退出程序最后在终点退出软件学院11.1.1 线程与程序线程与程序线程与可执行程序的区别线程与可执行程序的区别线程不是一个完整的可执行程序,它不能自线程不是一个完整的可执行程序,它不能自动开始动开

4、始线程在程序中运行,由程序来启动一个线程线程在程序中运行,由程序来启动一个线程我们前面学到的程序,其核心都是一个线程我们前面学到的程序,其核心都是一个线程程序的作用是给线程加上一段创建并启动线程序的作用是给线程加上一段创建并启动线程的代码程的代码软件学院11.1.2 多线程多线程多线程的概念多线程的概念如果一个程序中同时启动了两个或更多个线如果一个程序中同时启动了两个或更多个线程,则称为多线程程序程,则称为多线程程序有些应用程序需要做到有些应用程序需要做到“一心二用一心二用”,一个,一个在前台随时听候用户调遣,另一个在后台完在前台随时听候用户调遣,另一个在后台完成用户交待的工作成用户交待的工作

5、利用多线程程序就可以做到这一点,只需要利用多线程程序就可以做到这一点,只需要让程序启动两个线程,一个在前台接受用户让程序启动两个线程,一个在前台接受用户指令,另一个在后台进行具体工作指令,另一个在后台进行具体工作软件学院11.1.2 多线程多线程多线程程序的应用多线程程序的应用应用非常广泛,常用程序几乎都是多线程应用非常广泛,常用程序几乎都是多线程多线程的典型例子:多线程的典型例子:IE浏览器浏览器利用浏览器浏览网页时,受速度限制,网页不可利用浏览器浏览网页时,受速度限制,网页不可能一下子就全部显示出来能一下子就全部显示出来对于单线程程序,我们只能耐心地等待网页全部对于单线程程序,我们只能耐心

6、地等待网页全部显示出来,然后才能继续控制浏览器显示出来,然后才能继续控制浏览器多线程程序:线程一,下载并显示网页多线程程序:线程一,下载并显示网页线程二,在前台响应用户的输入,如果用户想翻线程二,在前台响应用户的输入,如果用户想翻动页面,线程二会立即做出响应动页面,线程二会立即做出响应软件学院11.2 多线程程序设计多线程程序设计创建线程的方法创建线程的方法方法方法1:产生一个继承:产生一个继承Thread类的线程类类的线程类方法方法2:让一个普通类实现:让一个普通类实现Runnable接口接口两种方法的比较:两种方法的比较:方法方法2比方法比方法1要复杂一些要复杂一些如果你的类需要继承其他类

7、(比如图形界面类如果你的类需要继承其他类(比如图形界面类JFrame,小程序类,小程序类Applet),那么这个类就不),那么这个类就不能再继承线程类能再继承线程类此时就必须通过实现此时就必须通过实现Runnable接口来实现接口来实现软件学院11.2.1 多线程程序的设计多线程程序的设计-1(1)建立自己的线程类建立自己的线程类(2)在主程序中创建线程对象在主程序中创建线程对象(3)启动线程启动线程(4)结束线程结束线程软件学院11.2.1.1 建立线程类建立线程类线程类继承自线程类继承自Thread类类必须覆盖必须覆盖Thread类的类的run(运行)函数(运行)函数当主程序运行该线程时,

8、实际上就是运当主程序运行该线程时,实际上就是运行行run函数中的代码函数中的代码run函数运行完毕以后,线程自动结束函数运行完毕以后,线程自动结束run函数的作用相当于主程序的函数的作用相当于主程序的main函数函数软件学院11.2.1.2 创建线程对象创建线程对象如下面的例子:如下面的例子:RabbitThread rabbit=new RabbitThread(兔子兔子);TortoiseThread tortoise=new TortoiseThread(乌龟乌龟);构造函数中的参数表示线程名称构造函数中的参数表示线程名称线程的名称可以随便给出线程的名称可以随便给出在本例中,给在本例中,

9、给RabbitThread线程起名叫线程起名叫“兔子兔子”,TortoiseThread线程起名叫线程起名叫“乌龟乌龟”软件学院11.2.1.3 启动、结束线程启动、结束线程(3)启动线程启动线程通过调用线程对象的通过调用线程对象的start函数实现函数实现下面的代码启动了两个线程下面的代码启动了两个线程 rabbit.start();tortoise.start();(4)结束线程结束线程当线程类的当线程类的run函数执行完后,线程会自动函数执行完后,线程会自动结束,无须人工干预结束,无须人工干预软件学院11.2.2 多线程程序的设计多线程程序的设计-2实现实现Runnable接口的具体做法

10、接口的具体做法(1)让普通的类实现让普通的类实现Runnable接口接口class RabbitThread implements Runnable .(2)实现实现Runnable接口的接口的run函数函数public void run().(3)创建一个普通类的对象创建一个普通类的对象RabbitThread rabbit=new RabbitThread();软件学院11.2.2 多线程程序的设计多线程程序的设计-2实现实现Runnable接口的具体做法接口的具体做法(4)创建一个线程(创建一个线程(Thread)对象,在线程对)对象,在线程对象构造函数的参数中需要给出普通类的对象,象构

11、造函数的参数中需要给出普通类的对象,以及线程名称以及线程名称Thread thread1=new Thread(rabbit,兔子兔子);(5)调用线程对象的调用线程对象的start函数,线程对象会启函数,线程对象会启动线程,并且在该线程中运行普通类的动线程,并且在该线程中运行普通类的run函函数数thread1.start();软件学院11.2.2 多线程程序的设计多线程程序的设计-2启动、暂停、停止线程启动、暂停、停止线程线程的启动:通过线程类(或者其子类)的线程的启动:通过线程类(或者其子类)的start函数来实现:函数来实现:thread1.start();启动线程之后,会自动在线程中

12、运行启动线程之后,会自动在线程中运行run函函数,数,run函数相当于普通程序的函数相当于普通程序的main函数函数线程的暂停:包括休眠与等待,二者的不同线程的暂停:包括休眠与等待,二者的不同点在于休眠的线程会在设定的时间后自动醒点在于休眠的线程会在设定的时间后自动醒来,而等待的线程必须被其它线程叫醒来,而等待的线程必须被其它线程叫醒软件学院11.2.2 多线程程序的设计多线程程序的设计-2启动、暂停、停止线程启动、暂停、停止线程线程的休眠:利用线程的休眠:利用Thead类的类的sleep静态函静态函数休眠,函数的参数为休眠时间(毫秒)数休眠,函数的参数为休眠时间(毫秒)Thead.sleep

13、(1500);线程的等待:调用线程的等待:调用wait函数会使线程处于等函数会使线程处于等待状态,处于等待状态的线程需要其它线程待状态,处于等待状态的线程需要其它线程发送发送notify或或notifyAll消息来激活它消息来激活它wait/notify常用于线程间的同步常用于线程间的同步软件学院11.2.2 多线程程序的设计多线程程序的设计-2启动、暂停、停止线程启动、暂停、停止线程线程的中止:一个线程不需要特别的代码来线程的中止:一个线程不需要特别的代码来中止它,当中止它,当run函数中的代码都执行完了以函数中的代码都执行完了以后,线程就自然中止了后,线程就自然中止了有些线程需要设计成反复循环型,只有人工有些线程需要设计成反复循环型,只有人工干预才能中止它干预才能中止它例如编写一个在后台运转的时钟程序,每秒例如编写一个在后台运转的时钟程序,每秒钟在屏幕上显示当前时间,我们希望时钟线钟在屏幕上显示当前时间,我们希望时钟线程持续运转,直到手动停止它为止程持续运转,直到手动停止它为止软件学院11.3 线程生命周期线程生命周期软件学院

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁