java單例模式

2021-08-21 07:33:51 字數 1632 閱讀 5006

餓漢模式:

public class singleton1

public static singleton1 getinstance()

}

這個會在singleton1 類在載入時就建立例項物件。如果是配置類(數量較少的)還可以接受,如果是大量的單例都用這種寫法就會有不必要的系統資源浪費,很多被建立出來的例項有可能並沒有被使用到。

飽漢模式:

public class singleton2

public static synchronized singleton2 getinstance()

}

public

class

synchronizedsingleton

//給出乙個公共的靜態方法返回乙個單一例項

public

static

synchronizedsingleton getinstance()

}

} return

synchronizedsingleton;

}

}這種寫法也被稱為雙重鎖機制。一般教科書上的範本也是這樣。但是這種情況如果深入,在考慮jvm的情況下也會有併發的問題。出現這種問題主要由於jvn的指令重排機制,在new物件的過程中會出現併發的問題,可以加上volatile關鍵字再度優化一下

publicclasssynchronizedsingleton

//給出乙個公共的靜態方法返回乙個單一例項

public

static

synchronizedsingleton getinstance()

}

}

return

synchronizedsingleton;

}

}

還有一種內部類的寫法機制也值得推薦:

public

class

singleton  

public

static

singleton getinstance() 

private

static

class

singletoninnerinstance

}

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的靜態方法,可...

Java單例模式

單例模式的意圖是為了確保乙個類有且僅有乙個例項,並為它提供乙個全域性訪問點。單例模式通過隱藏建構函式,提供物件建立的唯一入口點,從而將類的職責集中在類的單個例項中。design patterns一書中把單例模式歸類為 建立型 模式,意圖是在表明單例物件承擔了其他物件所要依賴的職責。單例模式的優點 在...