- 1、本文档共55页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Ja的va线程
10.4 线程互斥 10.4.1问题的提出 10.4.2 互斥对象 10.4.1问题的提出 首先我们来看一个例子。类Acount代表一个银行账户。其中变量balance是该账户的余额。 public class Acount{ double balance; public Acount(double money){ balance = money; System.out.println(Totle Money: +balance); } } 10.4.1问题的提出 下面我们定义一个线程,该线程的主要任务是从Acount中取出一定数目的钱。 public class AcountThread extends Thread { Acount acount; int delay; public AcountThread(Acount acount,int delay) { this.acount =acount; this.delay = delay; } 10.4.1问题的提出 public void run(){ if(acount.balance = 100){ try{ sleep(delay); acount.balance = acount.balance - 100; System.out.println(withdraw 100 successful!); }catch(InterruptedException e) { } } else System.out.println(withdraw failed!); } 10.4.1问题的提出 public static void main(String[] args) { Acount acount = new Acount(100); AcountThread acountThread1 = new AcountThread(acount,1000); AcountThread acountThread2 = new AcountThread(acount,0); acountThread1.start(); acountThread2.start(); } } 10.4.1问题的提出 该结果非常奇怪,因为尽管账面上只有100元,但是两个取钱线程都取得了100元钱,也就是总共得到了200元钱。出错的原因在哪里呢? 由于线程1在判断满足取钱的条件后,被线程2打断,还没有来得及修改余额。因此线程2也满足取钱的条件,并完成了取钱动作。从而使共享数据balance的完整性被破坏。 参见AcountThread.java 运行结果如下: Totle Money: 100.0 withdraw 100 successful! withdraw 100 successful! 10.4.2 互斥对象 上面的问题,并不是新问题,其实在并发程序设计中已经被研究并得到了解决。我们首先回忆两个概念。在并发程序设计中,对多线程共享的资源或数据成为临界资源,而把每个线(进)程中访问临界资源的那一段代码段成为临界代码段。通过为临界代码段设置信号灯,就可以保证资源的完整性,从而安全地访问共享资源 10.4.2 互斥对象 为了实现这种机制,Java语言提供以下两方面的支持: 1 为每个对象设置了一个“互斥锁”标记。该标记保证在每一个时刻,只能有一个线程拥有该互斥锁,其它线程如果需要获得该互斥锁,必须等待当前拥有该锁的线程将其释放。该对象成为互斥对象。因此,java中的每一个对象都是互斥对象. 2 为了配合使用对象的互斥锁,Java语言提供了保留字synchronized.其基本用法如下: synchronized(互斥对象){ 临界代码段 } 修改后的程序AccountThread2.java AccountThread2.java class Semaphore{} public class AcountThread2 extends Thread { Acount acount; int delay; Semaphore semaphore; public AcountThread2(Acount acount,int delay,Semaphore semaphore) { this.acount =acount; thi
您可能关注的文档
- Illustrato的r试题 答案.doc
- IH的E测试培训-模拟系统MESA的安装及使用.ppt
- InCloud Sphe的re V4 0旗舰版-vF+安全.pptx
- impala的学习笔记.docx
- INCO Terms国际贸易术的语总结.pptx
- Internet协议的分析作业答案.doc
- Internet的应用教程.ppt
- inco的Pat 售后培训手册.pdf
- IND880的车辆衡说明书_R00.pdf
- InTou的ch教程.ppt
- 2024高考物理一轮复习规范演练7共点力的平衡含解析新人教版.doc
- 高中语文第5课苏轼词两首学案3新人教版必修4.doc
- 2024_2025学年高中英语课时分层作业9Unit3LifeinthefutureSectionⅢⅣ含解析新人教版必修5.doc
- 2024_2025学年新教材高中英语模块素养检测含解析译林版必修第一册.doc
- 2024_2025学年新教材高中英语单元综合检测5含解析外研版选择性必修第一册.doc
- 2024高考政治一轮复习第1单元生活与消费第三课多彩的消费练习含解析新人教版必修1.doc
- 2024_2025学年新教材高中英语WELCOMEUNITSectionⅡReadingandThi.doc
- 2024_2025学年高中历史专题九当今世界政治格局的多极化趋势测评含解析人民版必修1.docx
- 2024高考生物一轮复习第9单元生物与环境第29讲生态系统的结构和功能教案.docx
- 2024_2025学年新教材高中英语UNIT5LANGUAGESAROUNDTHEWORLDSect.doc
最近下载
- 第12课 新文化运动 课件(23张PPT).pptx
- 机载临时支护装置安装使用说明书.docx
- 中国基本国情教案(汉语国际教育).docx
- 人教版数学二年级上册第五单元《观察物体(一)》大单元整体教学设计.doc
- 第2章 直线与圆的位置关系 复习课.doc VIP
- 中职学校《金属加工与实训》全套电子教案(含教学进度计划)(配套教材:高教版中职统编)云天课件( word 版).docx
- 程家惠《洋话汉音》(升级版).doc
- onbon仰邦科技 六代三基色控制器 BX-6K系列 规格书 本压缩包包含BX-6K1、6K2、 6K3、6K4-T08、6K4-T12 5个产品的规格书。说明书用户手册.pdf
- 职业生涯规划书ppt职业生涯规划书ppt.ppt
- 卡拉OK数码功放KMA-1080KMA-980中文使用说明书.pdf
文档评论(0)