程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> singleton-求助:單例模式下volatile可見性問題

singleton-求助:單例模式下volatile可見性問題

編輯:編程綜合問答
求助:單例模式下volatile可見性問題

public class Singleton {
private volatile static Singleton instance = null;

private Singleton() {

}
/**
 * @return
 */
public static Singleton getInstance() {
    if (instance == null) {
        synchronized (Singleton.class) { 
            if (instance == null) { 
                instance=new Singleton();
            }
        }
    }
    return instance;
}
}
這段代碼如果instance不加volatile可不可能存在instance=new Singleton();後instance
對其他線程暫時不可見的現象

最佳回答:


volatile的作用是保證instance取到的值是最新的,在你這個例子中,它是沒有什麼意義的,你已經加了synchronized了。這個就保證了單例。但其實你直接在getInstance方法上加synchronized更簡潔。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved