最新Java面向对象程序设计与系统开发第12章 线程处理(共17张PPT课件).pptx
-
资源ID:27188142
资源大小:1.66MB
全文页数:17页
- 资源格式: PPTX
下载积分:20金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
最新Java面向对象程序设计与系统开发第12章 线程处理(共17张PPT课件).pptx
面向对象程序设计面向对象程序设计与系统与系统(xtng)开发开发第12章 线程处理(chl)第一页,共十七页。2驱动驱动(q dn)任务一任务一采用(ciyng)线程类Thread实现每隔一分钟就提示用户使用了ATM机的时间。 第二页,共十七页。3目标目标(mbio)及知识点及知识点线程的基本概念线程的基本概念1 1StringBuffer类类2线程线程sleep()方法的使用方法的使用 3第三页,共十七页。4 走近线程走近线程 第四页,共十七页。5 Thread线程类线程类 v Thread是java.lang包里的管理线程的类。它的每一个实例对象就对应着一个线程,一个线程能承担(chngdn)一项独立的工作。/* * MyThread类继类继承了承了Thread类类所以也成所以也成为为了一个了一个线线程程类类 * */public class MyThread extends Thread /* * 这这个方法是个方法是线线程程类类运行运行(ynxng)的入口,要的入口,要实现逻辑实现逻辑必必须须要重写要重写这这个方法个方法 */public void run()System.out.println(我是我是线线程在程在说话说话);第五页,共十七页。6 Thread线程类线程类 v Thread是java.lang包里的管理线程的类。它的每一个实例对象就对应着一个线程,一个线程能承担一项独立(dl)的工作。/* * MyThread类继类继承了承了Thread类类所以也成所以也成为为了一个了一个线线程程类类 * */public class MyThread extends Thread /* * 这这个方法是个方法是线线程程类类运行的入口,要运行的入口,要实现实现(shxin)逻辑逻辑必必须须要重写要重写这这个方法个方法 */public void run()System.out.println(我是我是线线程在程在说话说话);第六页,共十七页。7启动启动(qdng)线程线程 v 一个新创建的线程并不自动开始运行。你必须调用它的start()方法。v 调用start()方法使线程处于可运行状态,这意味着它可以由JVM(Java虚拟机)调度(diod)并执行。但这并不意味着线程就会立即运行。public class Test public static void main(String args) MyThread p = new MyThread();/生成了一个生成了一个线线程,放到了内存中程,放到了内存中p.start();/注意注意(zh y), ,这这里里调调用用Thread中的中的start()方法,方法, 该该方法将去方法将去调调用用run()方法方法System.out.println(我是主程序在我是主程序在说话说话);运行结果:运行结果:我是主程序在说话我是主程序在说话我是线程在说话我是线程在说话第七页,共十七页。8线程中的join方法(fngf)v 那么怎么描述两个并行的任务在某个时候要求其中一个任务必须要另一个任务完成的基础(jch)上才能完成,就如同我看书的时候被送快递的打断,必须要先出去领了快递让送快递的任务完成才能继续看书。要描述这样的情况,可以使用线程中的join()方法实现。public class Test public static void main(String args) MyThread p = new MyThread();/生成了一个生成了一个线线程,放到了内存中程,放到了内存中p.start();try p.join();/将将这这个个线线程加入到主程序当中,只有当程加入到主程序当中,只有当这这个个线线程程执执行行 完以后主程序才完以后主程序才继续继续向下向下(xin xi)执执行行 catch (InterruptedException e) e.printStackTrace();System.out.println(我是主程序在我是主程序在说话说话);运行结果:运行结果:我是线程在说话我是线程在说话我是主程序在说话我是主程序在说话第八页,共十七页。9线程中的sleep方法(fngf)v 线程根据其优先级由虚拟机自行判断某个时间段该哪个线程执行,一般来说我们是不用去干预(gny)的。但现实生活中存在着需要干预(gny)线程的情况,还是比如我在飞机上,我要每隔1个小时打个盹(让线程停止),在Java语言中如何描述?这就要用到线程中的sleep()方法。public class MyThread extends Thread /* * 这这个方法是个方法是线线程程类类运行的入口,要运行的入口,要实现逻辑实现逻辑必必须须要重写要重写这这个方法个方法 */public void run()trysleep(1000);/参数参数(cnsh)是毫秒,是毫秒,1000表示表示1秒秒catch(Exception e)System.out.println(我是我是线线程在程在说话说话);第九页,共十七页。10任务任务(rn wu)实现实现1分析分析(fnx)业务业务流程流程23分析抽象分析抽象(chuxing)出各个类;出各个类; 按照类图构建线程类;按照类图构建线程类;45实现类中具体方法实现类中具体方法 ;在项目中生成一个线程,并使其运行在项目中生成一个线程,并使其运行 ;第十页,共十七页。11驱动驱动(q dn)任务任务二二如果上一节的任务中TimeThread线程类已经继承了其他类,由于Java只能单继承,那么我们没有办法再继承Thread类,此时我们可以用线程接口Runnable来实现相同(xin tn)的功能。第十一页,共十七页。12目标目标(mbio)及知识点及知识点线程接口线程接口Runnable的使用的使用 1 1如何终止线程的运行如何终止线程的运行 2第十二页,共十七页。13Runnable接口(ji ku)v 由于(yuy)Java不能用extends实现多继承,如果一个类已经继承了其他类而还想成为一个线程的话,就要用到java.lang包里的Runnable接口。 /*Driver类继类继承于承于People类类, ,实现实现了一个了一个Runnable接口接口*/public class Driver extends People implements Runnable在在实现这实现这个个(zh ge)接口的同接口的同时时必必须须要要实现实现接口中的接口中的run方法如下所示:方法如下所示:/*Driver类继类继承于承于People类类, ,实现实现了一个了一个Runnable接口接口*/public class Driver extends People implements Runnablepublic void run()第十三页,共十七页。14终止终止(zhngzh)一个线程一个线程 v 当run方法执行完之后,该线程就自动停止(tngzh)运行。因此我们想让线程一直执行的时候我们一般是采用设置run方法为一个死循环:while(true)v 要想终止如上的一个被设置为死循环的线程,只要将其要想终止如上的一个被设置为死循环的线程,只要将其true条件改变为条件改变为flase即可。如上一个任务中我们设置即可。如上一个任务中我们设置5分钟线程分钟线程自动结束只需要添加如下黑体字部分代码,更改自动结束只需要添加如下黑体字部分代码,更改while循环的循环的条件值。条件值。public void run() while (!isEnd) /如果如果线线程没有程没有结结束束try sleep(60000);/线线程睡程睡1分分钟钟,1000为为1秒秒 catch (InterruptedException e) e.printStackTrace();number+;/计计数器增加数器增加1System.out.println(您已您已经经(y jing)使用使用+number+分分钟钟); if(number=5) isEnd=false; 第十四页,共十七页。15任务任务(rn wu)实现实现1分析分析(fnx)业务业务流程流程23分析分析(fnx)抽象出各个类;抽象出各个类; 按照类图构建线程类;按照类图构建线程类;45实现类中具体方法实现类中具体方法 ;在项目中生成一个线程,并使其运行在项目中生成一个线程,并使其运行 ;第十五页,共十七页。16课堂课堂(ktng)总结总结 第十六页,共十七页。内容(nirng)总结面向对象程序设计与系统开发。/*。* 这个方法是线程类运行的入口,要实现逻辑必须要重写这个方法。该方法将去调用run()方法。要描述这样的情况,可以使用线程中的join()方法实现。线程根据其优先级由虚拟机自行判断某个时间段该哪个线程执行,一般来说我们是不用去干预(gny)的。/参数是毫秒,1000表示1秒。因此我们想让线程一直执行的时候我们一般是采用设置run方法为一个死循环:。isEnd) /如果线程没有结束第十七页,共十七页。