- 0
- 0
- 约3.26千字
- 约 3页
- 2017-11-20 发布于北京
- 举报
使用waitnotify实现多线程同步
使用wait,notify实现多线程同步(转)
2008-11-06 22:47
??????? 笔注:本文来自网络
??????? wait,notify,sleep,join这几个方法很常用,这里涉及到多线程和同步问题,这里稍微解释一下.
1.wait和notify这两个方法都是Object中的方法,放在一块是因为他们关系非常密切.wait就是等待这个对象的同步锁,不过调用这个方法必须先获得这个对象的同步锁,就这一点很多人就搞晕了.这里先解释一下这两个方法,然后给出一个小例子说明.
wait:等待对象的同步锁,需要获得该对象的同步锁才可以调用这个方法,否则后收到一个IllegalMonitorStateException,这个是运行时异常.调用这个方法后,就放弃了这个同步锁了.如果不带参数的wait方法就只有等别人唤醒了,如果带一个参数的化就设置等待最长时间,过了这个时间即使没有人唤醒这个线程也不再等待了.
notify:唤醒在等待该对象同步锁的线程(只唤醒一个,如果有多个在等待),但是notifyAll可以唤醒所有等待的线程,注意唤醒的时在notify之前wait的线程,之后的没有效果.
这里举一个通俗的例子,两个人共有一个卫生间(每次只能一个人用),他们都要刷牙和方便,他们是这样约定的,轮流用,第一个人先刷牙,然后第二个人刷牙...
class Syn{??????? public static void main(String[] args) throws Exception??????? {??????????? TwoPeople.ONE.start();??????????? TwoPeople.TWO.start();??????? }}
class TwoPeople extends Thread{??? private int i=0;??? static Thread ONE=new TwoPeople(1);??? static Thread TWO=new TwoPeople(2);
??? static Object washroom=new Object();??? ??? private TwoPeople(int i){this.i=i;}??? public void run(){??????? synchronized(washroom){??????????? try{??????????????? if(i==1){??????????????????? brush(); //1
??????????????????? washroom.wait(); //2??????????????????? release(); //6??
??????????????????? washroom.notify(); //7??????????????? }??????????? else{??????????????????? brush(); //3??????????????????? washroom.notify(); //4??????????????????? washroom.wait(); //5??????????????????? release(); //8??????????? }??????????? }catch(InterruptedException e){e.printStackTrace();}??????? }??? }??? private void brush() {??????????? System.out.println(People +i+ is brushing !);???????????? try{Thread.sleep(2000);}catch(InterruptedException e){e.printStackTrace();}???????????? //延迟两秒看效果???????????? System.out.println(People +i+ has burshed !);???? }???? private void release(){???????????? System.out.println(People +i+ is releasing !);???????????? try{Thread.sleep(2000);}catch(InterruptedException e){e.printStackTrace();}
???????????? //延迟两秒看效果???????????? System.out.printl
您可能关注的文档
- 京滨园区京东商城实习报告.doc
- 京东商城如何取消订单.doc
- 京都左京区(京大周边)生活总结.docx
- 京口北固亭怀古教学反思.doc
- 亲子沟通质量直接影响学生的同伴关系.doc
- 亲子阅读18招让孩子爱上书.doc
- 亲情与爱情到底孰轻孰重.doc
- 亲水餐厅水景与美食共飨.doc
- 亲爱的2011届毕业生同学们.doc
- 亲爱的再见伤感情歌集锦.doc
- 小区绿化施工协议书.docx
- 墙面施工协议书.docx
- 1 古诗二首(课件)--2025-2026学年统编版语文二年级下册.pptx
- (2026春新版)部编版八年级道德与法治下册《3.1《公民基本权利》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《4.3《依法履行义务》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.2《按劳分配为主体、多种分配方式并存》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.1《公有制为主体、多种所有制经济共同发展》PPT课件.pptx
- 初三教学管理交流发言稿.docx
- 小学生课外阅读总结.docx
- 餐饮门店夜经济运营的社会责任报告(夜间贡献)撰写流程试题库及答案.doc
最近下载
- 人教版三年级数学下册《口算除法》.ppt VIP
- 中华民族共同体概论课件专家版3第三讲 文明初现与中华民族起源(史前时期).pptx VIP
- 西南财经大学专题研究生考试参考书目.pdf VIP
- 中华民族共同体概论课件第十二讲民族危亡与中华民族意识觉醒(1840—1919)2025年版.pptx VIP
- 金属地下矿山安全教育培训课件.ppt VIP
- 第二学期八年级数学备课组工作计划.docx VIP
- 妇科护理宫腔镜进修总结.pptx
- 中华民族共同体概论大讲堂之第十二讲民族危亡与民族意识觉醒(1840—1919).pptx VIP
- 2025年度销售工作总结与2026战略规划.pptx VIP
- 《横县鱼生全链条管理规范 第1部分:养殖》.docx VIP
原创力文档

文档评论(0)