亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

一個java多線程問題

一個java多線程問題

我要變大神大神大大神 2017-01-01 14:52:04
public?class?Resource?{ String?name; String?sex; boolean?flag?=?false; int?x?=?0; public?synchronized?void?set(String?name,?String?sex){ while?(flag) try{ this.wait(); }catch(InterruptedException?e){} this.name?=?name; this.sex?=?sex; flag?=?true; this.notifyAll(); x?=?(x+1)%2; } public?synchronized?void?out(){ while?(!flag) try{ this.wait(); }catch(InterruptedException?e){} System.out.println(name+"...."+sex); flag?=?false; this.notifyAll(); } } ----------------------------------------------------------------------------------------- public?class?Input?implements?Runnable?{ Resource?r; int?x?=?0; Input(Resource?r){ this.r?=?r; } @Override public?void?run()?{ while?(true){ if?(r.x?==?0) r.set("mike",?"man"); else r.set("麗麗",?"女女女女女女女女"); } } } -------------------------------- public?class?Output?implements?Runnable?{ Resource?r; Output(Resource?r) { this.r?=?r; } @Override public?void?run()?{ while(true) { r.out(); } } } ---------------------- public?class?ResourceDemo?{ public?static?void?main(String[]?args)?{ Resource?r?=?new?Resource(); Input?in?=?new?Input(r); Output?out?=?new?Output(r); Thread?t1?=?new?Thread(in); Thread?t3?=?new?Thread(in); Thread?t5?=?new?Thread(in); Thread?t6?=?new?Thread(in); Thread?t7?=?new?Thread(in); Thread?t8?=?new?Thread(in); Thread?t9?=?new?Thread(in); Thread?t10?=?new?Thread(in); Thread?t11?=?new?Thread(in); Thread?t12?=?new?Thread(in); Thread?t2?=?new?Thread(out); Thread?t4?=?new?Thread(out); t1.start(); t2.start(); t3.start(); t4.start(); t5.start(); t6.start(); t7.start(); t8.start(); t9.start(); t10.start(); t11.start(); t12.start(); } }運行結果:我想要的結果是麗麗 ? 和 ?Mike ? 交替出現,為什么會出現這種 ?重復出現麗麗 ? 又重復出現Mike ?的現象呢? ? ?求大神分析一下
查看完整描述

3 回答

?
我要變大神大神大大神

TA貢獻2條經驗 獲得超0個贊

http://img1.sycdn.imooc.com//5868cd730001716c10700516.jpg變成自問自答了

查看完整回答
反對 回復 2017-01-01
?
我要變大神大神大大神

TA貢獻2條經驗 獲得超0個贊

http://img1.sycdn.imooc.com//5868c4d2000194d204890428.jpg分析了一下午,發現問題就是出自這里。

查看完整回答
反對 回復 2017-01-01
?
杜牧之

TA貢獻10條經驗 獲得超2個贊

那你可以使用下wait()跟notify(),使一線程運行完畢進入等待狀態,喚醒二線程.這樣交替等待-喚醒

查看完整回答
反對 回復 2017-01-01
  • 3 回答
  • 0 關注
  • 1423 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號