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

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

我覺得這里講的有問題

我覺得這里線程B已經把修改的值寫入主內存了,那么線程A執行number+1 時,number會從主內存中讀取到6,執行結果是正確的。


?錯誤的情況應該是:

1. 線程A讀取number的值,并且+1?

2. 線程B讀取number的值,并且+1?

3. 線程B寫入結果6到主內存?

4. 關鍵點,此時線程A寫入計算結果6, 給volatile修飾的變量賦值,只是會把值刷新到主內存。因此只加了一次。?


?不知道我的理解對不對?請大神指教



class Singleton{

? ? private volatile static Singleton instance = null;

? ? ?

? ? private Singleton() {

? ? }

? ? ?

? ? public static Singleton getInstance() {

? ? ? ? if(instance==null) {

? ? ? ? ? ? synchronized (Singleton.class) {

? ? ? ? ? ? ? ? if(instance==null)

? ? ? ? ? ? ? ? ? ? instance = new Singleton();

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? return instance;

? ? }

}


按老師的講解的例子 instance 已經緩存了,如何保證單例?


正在回答

舉報

0/150
提交
取消

我覺得這里講的有問題

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

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

幫助反饋 APP下載

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

公眾號

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