Java-多线程讲述.ppt

  1. 1、本文档共36页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Java-多线程讲述

* 9.6 线程间通信 为了更有效地协调不同线程的工作,需要在线程间建立沟通渠道,通过线程间的“对话”来解决线程间的同步问题 java.lang.Object 类的一些方法为线程间的通讯提供了有效手段 wait() notify() 随机唤醒一个等待的线程,本线程继续执行 notifyAll() 唤醒所有等待的线程,本线程继续执行 * 9.6 线程间通信 public synchronized void withdraw(int num){ int temp = balance; if(temp =num){ try{ System.out.println(“钱不够); wait(); }catch(InterruptedException e){ } } temp = temp - num; balance = temp; System.out.println(余额为:+balance); notify(); } * 9.6 线程间通信 public synchronized void deposit(int num){ int temp = balance; if(temp =10000){ try{ System.out.println(钱太多); wait(); }catch(InterruptedException e){ } } temp = temp + num; balance = temp; System.out.println(余额为:+balance); notify(); } * 学习总结 本章总结 所掌握的内容 所遇到的困难及解决办法 * 练习 用三个线程模拟三个售票口,总共出售200张票 用3个线程模仿3个售票口的售票行为 3个线程应该共享200张票的数据 实现一个数据单元,包括学号,姓名两部分。编写两个线程,一个线程往数据单元中写,另一个线程往出读。要求每写一次就往出读一次 * java语言程序设计 信息工程学院 * 第九章 多线程 * 目录 9.1 多线程的基本概念 9.2 线程的使用 9.3 线程的优先级 9.4 线程的数据共享 9.5 线程的同步 9.6 线程间通信 * 课前思考 什么是进程? 如何让程序同时执行多个任务? * 9.1 多线程的基本概念 9.1.1 程序、进程和多任务 程序: 是数据描述与操作代码的集合 静态的 进程: 程序的一次执行过程,是操作系统运行程序的基本单位。 动态的 多任务: 指在一个系统中可以同时运行多个程序,即有多个独立运行的任务 通常,每一个任务对应一个进程 * 9.1 多线程的基本概念 9.1.2 线程 进程中的实体 程序中单个顺序的控制流 一个进程可以拥有多个线程 一个线程必须有一个父进程 与父进程的其它线程共享该进程所拥有的全部资源 进程可以创建和撤消线程实现程序的并发执行 * 9.1 多线程的基本概念 9.1.2 线程 虚拟CPU (java.lang.Thread) 执行的代码 操作的数据 * 9.1 多线程的基本概念 9.1.3 线程的生命周期与状态 生命周期 线程从创建、运行到消亡的过程 线程的状态 创建(New) 可运行(Runnable) 运行中(Running) 挂起(NotRunnable) 死亡(Dead) * 9.1 多线程的基本概念 9.1.3 线程的生命周期与状态 * 9.2 线程的使用 创建线程的两种方法 通过继承 Thread类来创建线程 建立实现 Runnable接口的类来创建线程 * 9.2 线程的使用 9.2.1 通过继承 Thread 类创建线程 例:计算某个整数的阶乘 class FactorialThread extends Thread { private int num; public FactorialThread( int num ) { this.num=num; } public void run() { //线程体 int i=num; int result=1; while(i0) { result=result*i; i=i-1; } System.out.println(The f

您可能关注的文档

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档