第7多线程.ppt

上传人:本田雅阁 文档编号:2551753 上传时间:2019-04-07 格式:PPT 页数:27 大小:739.51KB
返回 下载 相关 举报
第7多线程.ppt_第1页
第1页 / 共27页
第7多线程.ppt_第2页
第2页 / 共27页
第7多线程.ppt_第3页
第3页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第7多线程.ppt》由会员分享,可在线阅读,更多相关《第7多线程.ppt(27页珍藏版)》请在三一文库上搜索。

1、第7章 多线程,7.1 操作系统中的进程与线程 7.2 Java的线程对象 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)态,Java

2、2程序设计实用教程(第2版),7.1.2 线程,引入线程机制的动机和思路 线程的定义和属性 线程(thread)是操作系统进程中能够独立执行的实体(控制流),是处理器调度和分派的基本单位。 并发性 共享性 动态性 结构性,Java2程序设计实用教程(第2版),图7.1 多线程进程模型,Java2程序设计实用教程(第2版),7.1.2 线程,线程的状态 图7.2 线程的5种状态及状态转换 线程的并发性 线程调度,Java2程序设计实用教程(第2版),7.1.3 并发程序设计,顺序程序设计 执行的顺序性。 环境的封闭性。 执行结果的确定性。 计算结果的可再现性。 并发程序设计,Java2程序设计实

3、用教程(第2版),7.2 Java的线程对象,7.2.1 Runnable接口与Thread类 7.2.2 线程对象的生命周期 7.2.3 线程对象的优先级,Java2程序设计实用教程(第2版),7.2.1 Runnable接口与Thread类,Runnable接口 public interface Runnable public abstract void run(); ,Java2程序设计实用教程(第2版),2. Thread线程类,public class Thread extends Object implements Runnable public Thread() /构造方法 pu

4、blic Thread(String name) /name指定线程名 public Thread(Runnable target) /target指定线程的目标对象 public Thread(Runnable target, String name) public void run() /描述线程操作的线程体 public final String getName() /返回线程名 public final void setName(String name) /设置线程名 public static int activeCount() /返回当前活动线程个数 public static T

5、hread currentThread() /返回当前执行线程对象 public Sting toString() /返回线程的字符串信息,包括名字、优先级和线程组 public synchronized void start() /启动已创建的线程对象 ,Java2程序设计实用教程(第2版),【例7.1】 声明继承Thread类实现奇数/偶数序列的线程并发执行。,main是首先启动执行的线程 两个线程交替运行,Java2程序设计实用教程(第2版),【例7.2】 声明实现Runnable接口实现奇数/偶数序列的线程并发执行。,Thread类的run()方法声明如下: public void r

6、un() /描述线程操作的线程体 if (target != null) target.run(); /执行目标对象的run()方法 Thread t1 = new Thread(); /t1的run()方法为空 Thread thread_odd = new Thread(odd,“奇数线程“); /thread_odd实际执行odd的run()方法,Java2程序设计实用教程(第2版),7.2.2 线程对象的生命周期,Thread类中声明的线程状态,Java2程序设计实用教程(第2版),2. Thread类中改变和判断线程状态的方法,线程启动 public synchronized voi

7、d start() /启动已创建的线程对象 public final boolean isAlive() /返回线程是否启动的状态 线程睡眠 public static void sleep(long millis) throws InterruptedException 线程中断 public void interrupt() /设置当前线程对象运行中断标记 public boolean isInterrupted() /判断线程是否中断 public static boolean interrupted() /判断线程是否中断,Java2程序设计实用教程(第2版),【例7.3】 设计滚动字

8、演示线程状态及改变方法。,本例演示线程对象的生命周期从创建到终止的过程,期间使用new、start()、sleep()、interrupt()等方法改变线程的状态。本例综合运用内部类、图形用户界面、线程等多方面技术实现设计思想。 声明自定义面板类为私有内部类并实现多个接口 线程状态变化,Java2程序设计实用教程(第2版),7.2.3 线程对象的优先级,Thread类中声明了3个表示优先级的公有静态常量: public static final int MIN_PRIORITY=1 /最低优先级 public static final int MAX_PRIORITY=10 /最高优先级 pu

9、blic static final int NORM_PRIORITY=5 /默认优先级 Thread类中与线程优先级有关的方法有以下2个: public final int getPriority() /获得线程优先级 public final void setPriority(int newPriority)/设置线程优先级,Java2程序设计实用教程(第2版),7.3 线程的同步机制,7.3.1 交互线程 7.3.2 线程间的竞争关系与线程互斥 7.3.3 线程间的协作关系与线程同步,Java2程序设计实用教程(第2版),7.3.1 交互线程,无关线程与交互线程 并发执行的交互线程间存在

10、与时间有关的错误,Java2程序设计实用教程(第2版),【例7.4】 银行账户的存/取款线程设计。,图7.6 并发线程共享临界资源 运行结果不惟一,取决于线程调度 线程执行被打断时出现错误,Java2程序设计实用教程(第2版),7.3.2 线程间的竞争关系与线程互斥,线程间的竞争关系 被阻塞线程永远得不到访问权,出现两个问题:死锁(deadlock)、饥饿(starvation)。 线程互斥和临界区管理 操作系统对共享一个变量的若干线程进入各自临界区有以下3个调度原则: 一次至多一个线程能够在它的临界区内。 不能让一个线程无限地留在它的临界区内。 不能强迫一个线程无限地等待进入它的临界区。特别

11、地,进入临界区的任一线程不能妨碍正等待进入的其他线程的进展。,Java2程序设计实用教程(第2版),3. Java的线程互斥实现,同步语句 synchronized (对象) 语句 同步方法 synchronized 方法声明,【例7.5】 互斥的存/取款线程设计。,图7.7 带互斥锁的并发线程执行流程,Java2程序设计实用教程(第2版),7.3.3 线程间的协作关系与线程同步,线程间的协作关系 【例7.6】 发送线程与接收线程。 图7.8 发送线程与接收线程通过缓冲区实现数据传递,Java2程序设计实用教程(第2版),7.3.3 线程间的协作关系与线程同步,线程同步 线程同步机制 背景 设

12、置信号量 线程根据信号量状态而执行 Java的线程通信方法 public final void wait() throws InterruptedException /等待 public final native void wait(long timeout) throws InterruptedException; /等待指定时间 public final native void notify(); /唤醒一个等待线程 public final native void notifyAll(); /唤醒所有等待线程,Java2程序设计实用教程(第2版),【例7.7】 采用信号量和同步方法使发送线程与接收线程同步运行。,图7.9 发送线程与接收线程同步执行流程,Java2程序设计实用教程(第2版),【例7.8】 发牌程序。,图7.10 1个发牌线程与4个取牌线程,Java2程序设计实用教程(第2版),实验7 线程设计,倒计时牌设计 图形动画设计,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1