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

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

在write和方法上加synchronized不能保證結果一定是6

使用synchronized實現可見性時,在wriite和read方法上都加上了這個關鍵字,但是main方法中啟動的是兩個線程,如果參數為false的先執行,那么結果就是0,程序的運行結果中確實還是可能是6或者0,請老師幫忙確認下

正在回答

1 回答

synchronized分為對象鎖和類鎖。加在非靜態方法上的鎖是對象鎖,由于main中new了兩個實例,write和read方法是不同對象,因此兩個鎖不是同一把鎖,不具有互斥性。

所以出現0和6的原因就是出現在處理器的重排序原因。兩個線程同時啟動,但是先執行哪個線程是有處理器決定的。如果是讀線程先執行,結果就是0;如果是寫線程先執行就是6;

如有問題請指正。

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

舉報

0/150
提交
取消

在write和方法上加synchronized不能保證結果一定是6

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

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

幫助反饋 APP下載

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

公眾號

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