


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1、知识点:同步与死锁1、 同步代码块与同步方法的使用;2、 死锁的产生结果。2、具体内容首先来观察同步问题的引出。第(1)页共(9)页package cn.demo;class MyThread implements Runnable privateticket = 10;Overridepublic void run() for (x = 0; x 0) / 表示现在有票try Thread.sleep(2000); catch (erruptedException e) e.prStackTrace();System.out.prln(Thread.currentThread().get
2、Name()+ 卖票,ticket=+this.ticket-); /卖票public classTestDemo public sMyThreadicmtvoid main(String args) / 线程主体类对象= new MyThread() ;new Thread(mt,票贩子A)new Thread(mt,票贩子B)new Thread(mt,票贩子C)ThreadThread Threadt1t2 t3=;t1.start()t2.start() t3.start();加入了休眠之后,发现程序的执行出现了负数的情况。第(2)页 共(9)页如果要想实现这种锁的机制,那么可以采用同
3、步代码块或同步方法来解决,并且里面要使用到一个关键字:synchronized。范例:利用同步代码块解决问题第(3)页 共(9)页package cn.demo;class MyThread implements Runnable privateticket = 10;Overridepublic void run() for (x = 0; x 0) / 表示现在有票try Thread.sleep(2000); catch (erruptedException e) e.prStackTrace();System.out.prln(Thread.currentThread().getNam
4、e()+ 卖票,ticket = + this.ticket-); /卖票利用同步这一操作,可以保证数据的,但是所带来是:代码的执行速度变慢。范例:定义同步方法第(4)页 共(9)页package cn.demo;public class TestDemo public sic void main(String args) MyThread mt = new MyThread(); / 线程主体类对象 Thread t1 = new Thread(mt, 票贩子A);Thread t2 = new Thread(mt, 票贩子B);Thread t3 = new Thread(mt, 票贩子C
5、);t1.start();t2.start();t3.start();class MyThread implements Runnableprivateticket = 10;Overridepublic void run() for (x = 0; xtry Thread.sleep(2000); catch (e.prerruptedException e) StackTrace();System.out.prln(Thread.currentThread().getName()+ 卖票,ticket = + this.ticket-); / 卖票第(5)页 共(9)页既然你同步的操作可以
6、让数据更加的安全,那么所有的代码都加上同步好了?实际上所谓的同步指的就是一个线程等待另外一个线程执行完毕的过程,它需要一个等待的过程,那么如果说现在有一种情况:两个线程互相等待各自的完成呢?范例:模拟一下互相等待的操作 死锁第(6)页 共(9)页package cn.demo;classpublic synchronized void fun(Second s) public class TestDemo public sic void main(String args) MyThread mt = new MyThread(); / 线程主体类对象 Thread t1 = new Threa
7、d(mt, 票贩子A);Thread t2 = new Thread(mt, 票贩子B);Thread t3 = new Thread(mt, 票贩子C);t1.start();t2.start();t3.start();ln(我对说: 请的本给System.out.pr我,我给你s.get();笔);public synchronized void get() ln(我得到了本子);System.out.prclass Second public synchronized voidfun(我说f): 请的笔给System.out.prln(我,我给你本);f.get();public synchronized voidget() 得到了笔);System.out.prln(public class TestDemo implements Runnablessicic= new() ;Second second = new Second() ;publicsic void main(String args) new TestDemo() ;第(7)页 共(9)页死锁是程序运行之中随机出现的可能性,以上的代码只是针对于死锁的产生结果做了分析,代码也比较。同步可以解决多个线程之间的锁。数据安全性问题,但是同步会影响性能,过的同步
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公办学校老师聘用合同范例
- 2025年中国混凝土湿喷机市场调查研究报告
- 2025年中国标准合页市场调查研究报告
- 佣金合同范例 结汇
- 2025年中国小型工作台面市场调查研究报告
- 2025年中国含两个模块许可的加密狗市场调查研究报告
- 2025年中国卫生级活接头市场调查研究报告
- 2025年中国办公保温杯市场调查研究报告
- 住宅楼开发商合同范例
- 公司培训公司合同范例
- 水电解质紊乱酸碱平衡
- 肝胆肠排毒演示文稿
- 地面贴砖工艺施工规范及验收标准
- 教师组织生活谈心谈话记录内容范文(5篇)
- 高压电工安全技术实操K13考试题库(含答案)
- 小学数学三年级口算、竖式、脱式、应用题(各280道)
- GB/T 38315-2019社会单位灭火和应急疏散预案编制及实施导则
- GB/T 1929-1991木材物理力学试材锯解及试样截取方法
- GB/T 19266-2008地理标志产品五常大米
- 市政级安全管理
- 锂离子电池粘结剂总结ATLCATL课件
评论
0/150
提交评论