第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

加synchronized關鍵字之后,執(zhí)行結果還是不確定

package?jmm;

/**
?*?Created?by?WangLong?on?2017-05-28.
?*/
public?class?SynchronizedDemo?{
????//共享變量
????private?boolean?ready=false;
????private?int?result=0;
????private?int?number=1;

????/**
?????*?寫操作
?????*/
????public?synchronized?void?write(){
????????ready=true;
????????number=2;
????}

????/**
?????*?讀操作
?????*/
????public?synchronized?void?read(){
????????if(ready){
????????????result=number*3;
????????}
????????System.out.println("result的值為:"+result);
????}

????/**
?????*?內部線程類
?????*/
????private?class?ReadWriteThread?extends?Thread{
????????private?boolean?flag;
????????public?ReadWriteThread(boolean?flag){
????????????this.flag=flag;
????????}

????????public?void?run(){
????????????if(flag){
????????????????write();????//構造方法中傳入true,執(zhí)行寫操作
????????????}else{
????????????????read();?????//構造方法中傳入false,執(zhí)行讀操作
????????????}
????????}
????}

????public?static?void?main(String[]?args)?{
????????SynchronizedDemo?demo=new?SynchronizedDemo();
????????demo.new?ReadWriteThread(true).start();?????//啟動線程執(zhí)行寫操作
????????/*try?{
????????????Thread.sleep(1000);
????????}?catch?(InterruptedException?e)?{
????????????e.printStackTrace();
????????}*/
????????demo.new?ReadWriteThread(false).start();?????//啟動線程執(zhí)行讀操作
????}
}

/**

????代碼如上:僅僅加入synchronized關鍵字之后,執(zhí)行結果還是不確定?。?br />

*/

正在回答

2 回答

調用的時候用線程調用,否則和普通方法調用一樣

0 回復 有任何疑惑可以回復我~

應該加上synchronized(this),而不是為方法加synchronized

0 回復 有任何疑惑可以回復我~
#1

Caption_1210 提問者

是由于實例變量導致的非線程安全問題,解決方法可以在run方法前面加synchronized 關鍵字(synchronized 可以在任意對象及方法上面加鎖): synchronized public void run() { if (flag) { write(); //構造方法中傳入true,執(zhí)行寫操作 } else { read(); //構造方法中傳入false,執(zhí)行讀操作 } }
2017-05-29 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

加synchronized關鍵字之后,執(zhí)行結果還是不確定

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

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

公眾號

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