1. 餓漢模式
public
class
sprivate
static s s=
news()
;public
static s get()
}
執行緒安全,載入時就初始化,根據需求來,此種用法最簡單
2. 懶漢模式public
class
sprivate
static s s;
public
static s get()
return s;
}}
執行緒不安全,會出現多個執行緒同時進入if判斷
方法上加 synchronized 字段,可以執行緒安全,但是多執行緒效能較低,因為即使以已經建立過示例,也會鎖住該方法
3. 雙重檢驗鎖public
class
sprivate
volatile
static s s;
public
static s get()
}}return s;
}}
執行緒安全。
如果不加第二個null檢驗,也會出現建立多個例項的情況,多個執行緒可以同時進入第乙個null檢測**塊,都會執行建立語句,只是順序執行而已
如果不加volatile 關鍵字,則第二個null檢測時,s可能是執行緒棧內的副本,不是主記憶體中的值,而主記憶體中的值已被其他執行緒例項化,會出現多次建立例項。4. 靜態內部類
public
class
sprivate
static
class
ipublic
static s get()
}
執行緒安全
5. 列舉類public
enum s
}
//呼叫
main()
通俗易懂 一天乙個設計模式 單例模式
前言 正文 什麼是單例模式?有趣的小豬搶蛋糕 單例模式 想看通俗易懂的工廠模式戳這裡。設計模式代表了前人的最佳實踐,在水平達到了一定的層級之後,總是要接觸設計模式的。本文旨在使用通俗易懂的例子,幫助初學者理解單例模式。單例模式顧名思義,乙個類僅能有乙個例項。所以他的物件不能被手動例項化 就無法保證只...
一天乙個設計模式 建造者模式
這個模式和工廠模式很像,建造者 builder 模式和工廠模式的關注點不同 建造者模式注重零部件的組裝過程,而工廠方法模式更注重零部件的建立過程,但兩者可以結合使用。舉個栗子,stringbuilder public class abstractstringbuilder char c privat...
一天乙個設計模式 原型模式
原型模式即通過乙個已有的物件clone出乙個一樣的物件,當直接建立該物件非常消耗資源時則可以考慮原型模式。實現轉殖操作,繼承 cloneable,重寫object的 clone 轉殖分深度轉殖和淺度轉殖 淺度轉殖 只把需要轉殖物件的成員變數的值複製過去,如果是引用變數也只會複製引 用位址,指向的和原...