Java2程序设计实用教程第2版课件第07章 多线程.ppt

Java2程序设计实用教程第2版课件第07章 多线程.ppt

ID:51963808

大小:309.50 KB

页数:29页

时间:2020-03-26

上传者:U-140596
Java2程序设计实用教程第2版课件第07章 多线程.ppt_第1页
Java2程序设计实用教程第2版课件第07章 多线程.ppt_第2页
Java2程序设计实用教程第2版课件第07章 多线程.ppt_第3页
Java2程序设计实用教程第2版课件第07章 多线程.ppt_第4页
Java2程序设计实用教程第2版课件第07章 多线程.ppt_第5页
资源描述:

《Java2程序设计实用教程第2版课件第07章 多线程.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

Java2程序设计实用教程第2版叶核亚 《Java2程序设计实用教程》(第2版)第1章Java概述第2章Java语言基础第3章面向对象的核心特性第4章接口、内部类和包第5章异常处理第6章图形用户界面第7章多线程第8章Applet应用程序第9章输入/输出流和文件操作第10章网络通信第11章数据库应用第12章JSP第13章综合应用设计 第7章多线程7.1操作系统中的进程与线程7.2Java的线程对象7.3线程的同步机制《Java2程序设计实用教程(第2版)》 7.1操作系统中的进程与线程7.1.1进程7.1.2线程7.1.3并发程序设计《Java2程序设计实用教程(第2版)》 7.1.1进程进程的定义和属性进程(process)是一个可并发执行的具有独立功能的程序(program)关于某个数据集合的一次执行过程,也是操作系统进行资源分配和保护的基本单位。结构性共享性动态性独立性并发性制约性进程的状态就绪(ready)态运行(running)态阻塞(blocked)态《Java2程序设计实用教程(第2版)》 7.1.2线程引入线程机制的动机和思路线程的定义和属性线程(thread)是操作系统进程中能够独立执行的实体(控制流),是处理器调度和分派的基本单位。并发性共享性动态性结构性《Java2程序设计实用教程(第2版)》 图7.1多线程进程模型《Java2程序设计实用教程(第2版)》 7.1.2线程线程的状态图7.2线程的5种状态及状态转换线程的并发性线程调度《Java2程序设计实用教程(第2版)》 7.1.3并发程序设计顺序程序设计执行的顺序性。环境的封闭性。执行结果的确定性。计算结果的可再现性。并发程序设计《Java2程序设计实用教程(第2版)》 7.2Java的线程对象7.2.1Runnable接口与Thread类7.2.2线程对象的生命周期7.2.3线程对象的优先级《Java2程序设计实用教程(第2版)》 7.2.1Runnable接口与Thread类Runnable接口publicinterfaceRunnable{publicabstractvoidrun();}《Java2程序设计实用教程(第2版)》 2.Thread线程类publicclassThreadextendsObjectimplementsRunnable{publicThread()//构造方法publicThread(Stringname)//name指定线程名publicThread(Runnabletarget)//target指定线程的目标对象publicThread(Runnabletarget,Stringname)publicvoidrun()//描述线程操作的线程体publicfinalStringgetName()//返回线程名publicfinalvoidsetName(Stringname)//设置线程名publicstaticintactiveCount()//返回当前活动线程个数publicstaticThreadcurrentThread()//返回当前执行线程对象publicStingtoString()//返回线程的字符串信息,包括名字、优先级和线程组publicsynchronizedvoidstart()//启动已创建的线程对象}《Java2程序设计实用教程(第2版)》 【例7.1】声明继承Thread类实现奇数/偶数序列的线程并发执行。main是首先启动执行的线程两个线程交替运行《Java2程序设计实用教程(第2版)》 【例7.2】声明实现Runnable接口实现奇数/偶数序列的线程并发执行。Thread类的run()方法声明如下:publicvoidrun()//描述线程操作的线程体{if(target!=null)target.run();//执行目标对象的run()方法}Threadt1=newThread();//t1的run()方法为空Threadthread_odd=newThread(odd,"奇数线程");//thread_odd实际执行odd的run()方法《Java2程序设计实用教程(第2版)》 7.2.2线程对象的生命周期Thread类中声明的线程状态《Java2程序设计实用教程(第2版)》 2.Thread类中改变和判断线程状态的方法线程启动publicsynchronizedvoidstart()//启动已创建的线程对象publicfinalbooleanisAlive()//返回线程是否启动的状态线程睡眠publicstaticvoidsleep(longmillis)throwsInterruptedException线程中断publicvoidinterrupt()//设置当前线程对象运行中断标记publicbooleanisInterrupted()//判断线程是否中断publicstaticbooleaninterrupted()//判断线程是否中断《Java2程序设计实用教程(第2版)》 【例7.3】设计滚动字演示线程状态及改变方法。本例演示线程对象的生命周期从创建到终止的过程,期间使用new、start()、sleep()、interrupt()等方法改变线程的状态。本例综合运用内部类、图形用户界面、线程等多方面技术实现设计思想。声明自定义面板类为私有内部类并实现多个接口线程状态变化《Java2程序设计实用教程(第2版)》 7.2.3线程对象的优先级Thread类中声明了3个表示优先级的公有静态常量:publicstaticfinalintMIN__PRIORITY=1//最低优先级publicstaticfinalintMAX_PRIORITY=10//最高优先级publicstaticfinalintNORM_PRIORITY=5//默认优先级Thread类中与线程优先级有关的方法有以下2个:publicfinalintgetPriority()//获得线程优先级publicfinalvoidsetPriority(intnewPriority)//设置线程优先级《Java2程序设计实用教程(第2版)》 7.3线程的同步机制7.3.1交互线程7.3.2线程间的竞争关系与线程互斥7.3.3线程间的协作关系与线程同步《Java2程序设计实用教程(第2版)》 7.3.1交互线程无关线程与交互线程并发执行的交互线程间存在与时间有关的错误《Java2程序设计实用教程(第2版)》 【例7.4】银行账户的存/取款线程设计。图7.6并发线程共享临界资源运行结果不惟一,取决于线程调度线程执行被打断时出现错误《Java2程序设计实用教程(第2版)》 7.3.2线程间的竞争关系与线程互斥线程间的竞争关系被阻塞线程永远得不到访问权,出现两个问题:死锁(deadlock)、饥饿(starvation)。线程互斥和临界区管理操作系统对共享一个变量的若干线程进入各自临界区有以下3个调度原则:一次至多一个线程能够在它的临界区内。不能让一个线程无限地留在它的临界区内。不能强迫一个线程无限地等待进入它的临界区。特别地,进入临界区的任一线程不能妨碍正等待进入的其他线程的进展。《Java2程序设计实用教程(第2版)》 3.Java的线程互斥实现同步语句synchronized(对象)语句同步方法synchronized方法声明《Java2程序设计实用教程(第2版)》 【例7.5】互斥的存/取款线程设计。图7.7带互斥锁的并发线程执行流程《Java2程序设计实用教程(第2版)》 7.3.3线程间的协作关系与线程同步线程间的协作关系【例7.6】发送线程与接收线程。图7.8发送线程与接收线程通过缓冲区实现数据传递《Java2程序设计实用教程(第2版)》 7.3.3线程间的协作关系与线程同步线程同步线程同步机制背景设置信号量线程根据信号量状态而执行Java的线程通信方法publicfinalvoidwait()throwsInterruptedException//等待publicfinalnativevoidwait(longtimeout)throwsInterruptedException;//等待指定时间publicfinalnativevoidnotify();//唤醒一个等待线程publicfinalnativevoidnotifyAll();//唤醒所有等待线程《Java2程序设计实用教程(第2版)》 【例7.7】采用信号量和同步方法使发送线程与接收线程同步运行。图7.9发送线程与接收线程同步执行流程《Java2程序设计实用教程(第2版)》 【例7.8】发牌程序。图7.101个发牌线程与4个取牌线程《Java2程序设计实用教程(第2版)》 实验7线程设计倒计时牌设计图形动画设计《Java2程序设计实用教程(第2版)》

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭