安全的懶漢式單例做法如下,valatile作用是當某個執行緒修改變數之後,直接將變數值回寫到記憶體中,其他執行緒可以馬上看到這個值。沒有使用volatile情況下,每個執行緒都會在工作記憶體(類似於暫存器和快取記憶體),例項物件都存放在主記憶體中,在每個執行緒要使用的時候把主記憶體中的內容拷貝到執行緒的工作記憶體中。使用volatile關鍵字修飾後的變數,保證每次修改了變數需要立即寫回主記憶體中,同時通知所有的該對變數的快取失效,保證快取一致性,其他執行緒需要使用該共享變數時就要重新從住記憶體中獲取最新的內容拷貝到工作記憶體中供處理器使用。這樣就可以保證變數修改的可見性了。
public class singleton
public static singleton getinstance()}}
return instance;
}}
靜態內部類的單例寫法:
public class singleton
public static singleton getinstance()
static class instanceholder
}
列舉單例寫法:
public enum easysingleton
Java單例模式總結
懶漢模式 在需要使用物件時,new 乙個出來,延遲載入,需要時才生成 缺點 存在多執行緒問題,可能會例項化多個物件。執行緒1在new物件之前,執行緒2已經開始進行null判斷導致。加入volatile 禁止指令重排序 和synchronized 同步 修飾雖然可以在一定程度上解決多執行緒安全問題,但...
java單例模式
第一種方法 public class singleton private static singleton singleton new singleton public static singleton getinstance 第二種方法 public class singleton private...
Java 單例模式
單例模式特點 1 單例類只能有乙個例項。2 單例類必須自己自己建立自己的唯一例項。3 單例類必須給所有其他物件提供這一例項。一 餓漢式單例 基於classloder機制避免了多執行緒的同步問題,使用較多 public class singleton 這裡提供了乙個供外部訪問本class的靜態方法,可...