龟兔赛跑多线程ppt课件_第1页
龟兔赛跑多线程ppt课件_第2页
龟兔赛跑多线程ppt课件_第3页
龟兔赛跑多线程ppt课件_第4页
龟兔赛跑多线程ppt课件_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第13章 龟兔赛跑 多线程 能力目标: 理解多线程、掌握线程的创建、启动、运行等 方法。 掌握线程优先级及其设置方法。 理解线程状态,线程中断和线程同步等概念。 能使用多线程编写龟兔赛跑程序和生产者消费 者程序。 内容介绍 13.1 任务预览 13.2 程序、进程与线程 13.3 多线程 13.4 线程类Thread 13.5 线程同步与互斥 13.6 本章小结 13.7 实训13:龟兔赛跑、生产者与消 费者 13.1 任务预览 本章实训程序运行结果: 13.2 程序、进程与线程 程序,是代码,是静态的。 进程,是程序在计算机上的一次运行过程,进 程是动态的。 线程也是动态的,是比进程更小的概念,它是 进程(程序运行过程)的一条执行路线。 线程与进程的区别:每个进程都有自己的一组 完整的变量,而线程则共享相同的数据。 Java语言拥有多线程机制。 并行编程通常能够显著地提高程序的性能。 多进程:在操作系统中能同时运行多个任务(程序)。 多线程:在同一应用程序(进程)中有多个顺序流同时执 行。 java.lang包提供线程类Thread,只要定义继 承Thread类的子类,并重写线程运行方法run 。 线程类的每一个对象都是一个线程,通过 start方法启动。 【例13-1】编写龟兔赛跑多线程程序,设赛跑长度为100 米,每跑完10米输出一次结果。 class Animal extends Thread /线程类 public Animal(String name) /构造方法,参数是线程名 super(name); public void run( ) /线程运行方法 for(int i=0; i0) balance += money; notify(); println(“成功存款¥“+ money + “,余额¥“ + balance); else System.out.println(“存款失败“); public synchronized void withdraw(double money) /同步取款 if (money0) while (moneybalance) try wait(); catch(InterruptedException e) balance -= money; println(“成功取款¥“+ money + “,余额¥“ + balance); else System.out.println(“取款失败“); public double getBalance() return balance; public String getName() return name; class DepositThread extends Thread /存款线程类 Account acc; public DepositThread(Account a) acc = a; public void run() for(int i=0; i= max) /若产品数超出最大库存量 try wait(); catch(Exception e) /则等待 this.num +; /直到被通知唤醒才生产 serialNum +; notify(); /通知消费 (“生产编号“+ serialNum + name + “,当前库存数:“+ num); public synchronized void output() /同步的消费(出仓)方法 while (num = 0) /若库存没有产品 try wait(); catch(Exception e) /则等待 this.num -; /直到被通知唤醒才消费 notify(); /通知生产 (“消费编号“+ name+“,当前库存数:“+num); class Producer extends Thread /生产者类 Storage store; public Producer(Storage store) this.store = store; public void run() for(int i=0; i10; i+) store.input(); /调用同步生产方法 class Consumer extends Thread /消费者类 Storage store; public Consumer(Storage store) this.store = store; public void run() for(int i=0; i10; i+) store.output(); /调用同步消费 方法 Storage store = new Storage(“洗衣机“, 3); /库存3洗 衣机仓库 Producer producer = new Producer(store); /生产者 Consumer consumer = new Consumer(store); /消费者 producer.start(); consumer.start(); 13.6 本章小结 线程是比进程更小的概念。 编写多线程程序涉及到线程类Thread。 编写多线程程序有两种方式:一是编写Thread子类并构造 其对象,二是编写实现Runnable接口的类,再用该类对象作 参数构造Thread对象。 线程的执行路线通过run方法实现。 线程按其重要程度分成10个优先级,缺省是5。 线程的状态可概括为4种:新建、运行、暂停(阻塞及等待 )、死亡。 多线程并发执行,涉及共享的临界资源冲突问题。如公司账 户,工厂产品等,宏观上同时被多个线程使用,但微观上在 某一时刻只能被一个线程独占使用。 线程同步与互斥最典型的应用是生产者与消费者模型。 编写该模型的多线程,要使用关键字synchronized。 13.7 实训13:龟兔赛跑、 生产者与消费者 (1)编写龟兔赛跑多线程程序,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论