- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第07章多线程(信息学院2013级)剖析
【例7.5】 银行账户的存/取款线程设计。 图7.7 并发线程共享临界资源 2. 并发执行的交互线程间存在与时间有关的错误 结果的原因分析: 有3个线程同时操作wang帐号,由于线程调度的因素,在某个线程执行的过程中(还没有结束),会被中断执行,转而执行另外一个线程。 * 7.3.2 线程间的竞争关系与线程互斥 线程间的竞争关系 两个线程共享同一资源,一个线程获得该资源,另一个线程就必须等待。 极端的状态:被阻塞线程永远得不到访问权。出现两个问题:死锁、饥饿。 * 2. 线程互斥和临界区管理 操作系统对共享一个变量的若干线程进入各自临界区有以下3个调度原则: 一次至多一个线程能够在它的临界区内。 不能让一个线程无限地留在它的临界区内。 不能强迫一个线程无限地等待进入它的临界区。特别地,进入临界区的任一线程不能妨碍正等待进入的其他线程的进展。 临界资源:多线程共享变量代表的资源称为临界资源; 临界区:并发线程中与共享变量有关的程序段称为临界区 * 3. Java的线程互斥实现 (1) 同步语句 synchronized (对象) //对象即临界资源 语句 //语句块为临界区 (2)同步方法 synchronized 方法声明 //同步方法体为临界区 基于操作系统对于线程进入临界区的3条原则,可以使用同步语句和同步方法来实现线程互斥。 * 【例7.6】 互斥的存/取款线程设计。 图7.9 带互斥锁的并发线程执行流程 * 线程体中互斥锁的用法 public void run() { synchronized(this.account) //声明临界区,锁定指定账户对象 { double howmatch = this.account.balance(); try { Thread.sleep(1); } //花费时间 catch(InterruptedException e) {} this.account.put(this.value); System.out.println(this.account.getName()+账户:现有+howmatch+, 存入+this.value+, 余额+this.account.balance()); } } 保证了存钱或取钱操作过程中不会被其他线程中断 只有完成一次性完整存钱或取钱操作,才把资源释放给其他线程。 * 同步方法实现互斥 * public void run() { doRun(); } public synchronized void doRun() { double howmatch = this.account.balance(); try { Thread.sleep(1); // 花费时间 } catch (InterruptedException e) { } this.account.put(this.value); System.out.println(this.account.getName() + 账户:现有 + howmatch + , 存入 + this.value + , 余额 + this.account.balance()); } 7.3.3 线程间的协作关系与线程同步 线程间的协作关系 多个线程共同完成一个任务而分工协作,但是每个线程都是独立的速度在执行,需要在某些特定的协调点上实现线程之间的同步。 【例7.7】 发送线程与接收线程。 例子分析: 发送线程向buffer里面存数据,接收线程从buffer里面去数据 理想情况是:发送线程存一个,接收线程取一个 实际情况:由于两个线程是独立运行,步调不一定一致。 解决思路:发送线程存完数据后,通知接收线程来取;接收线程取完数据后通知发送线程可以继续存数据。 * 线程间的协作关系: 当一个进程中多个线程分工协作完成同一任务时,它们之间彼此有联系,而且受其他线程执行结果的影响。这些线程之间有直接制约关系。 由于各个线程都是独立以不可预知的速度推进,需要协作的线程必须在某些事先设置的协调点上协调各自的工作。 当某个线程到达协调点,而其他线程还未到达时,其需要阻塞自己,直到其他合作线程发来协调信号后方被唤醒继续执行。 * 线程同步是解决线程协作关系的手段。 线程互斥(存取款的例子)是线程同步的特殊例子。即逐次使用互斥共享资源。 2. 线程同步 * 3. 线程同步机制 线程同步机制 设置信号 为共享变量(协调点变量)约定一个信号
您可能关注的文档
- 第06章-机器人传感器剖析.ppt
- 第06章图形用户界面剖析.ppt
- 第06章软件项目质量管理剖析.ppt
- 第06章软件实现剖析.ppt
- 第06章:动量剖析.ppt
- 第06章芳酸类非甾体抗炎药物的分析剖析.ppt
- 第05章货车车体剖析.ppt
- 第06课文明的冲撞与融合(课件)-2016-2017学年八年级历史上册剖析.ppt
- 第06章:计算机图形学基础2014剖析.ppt
- 第07章SQL高级应用剖析.ppt
- 2025至未来5年中国实验用箱式电阻炉市场数据分析及竞争策略研究报告.docx
- 2026及未来5年中国冬装毛衫市场数据分析及竞争策略研究报告.docx
- 2025至未来5年中国营养除皱剂市场数据分析及竞争策略研究报告.docx
- 2025至未来5年中国空调器保温件市场数据分析及竞争策略研究报告.docx
- 2025至未来5年中国直接液体染料市场数据分析及竞争策略研究报告.docx
- 2025至未来5年中国单基础轴流泵市场数据分析及竞争策略研究报告.docx
- 2025至未来5年中国复合磷铁粉市场数据分析及竞争策略研究报告.docx
- 2025至未来5年中国锇市场数据分析及竞争策略研究报告.docx
- 2025至未来5年中国水洗鬃市场数据分析及竞争策略研究报告.docx
- 2025至未来5年中国起子馍市场数据分析及竞争策略研究报告.docx
最近下载
- 2025年质量工程师“预防而非检验”的系统思维专题试卷及解析-单项选择题.pdf VIP
- 2026-2031年中国小麦加工行业研究及十五五规划分析报告.docx VIP
- 古医高人叶天士的100招,招招治病………….doc VIP
- 日间诊疗中心建设及模式创新.pptx VIP
- 海南省基本医疗保险参保人员转诊异地结算申请表.docx VIP
- 变截面锥筒钢结构构件的现场筒体施工方法.pdf VIP
- 2025年招标师招标采购基本原则在招标文件编制环节的综合应用案例分析专题试卷及解析.pdf VIP
- 2025初级《三色笔记与真题演练》-经济法.pdf VIP
- 2025年招标师循环经济促进法与采购策略专题试卷及解析.pdf VIP
- 河道整治建筑物的类别.ppt VIP
原创力文档


文档评论(0)