一個類始終保證只有一個物件,這種模式稱為單例模式,
優點:不需要反復創建與回收物件,節約記憶體空間,呼叫執行效率高
缺點:并發操作會造成執行緒不安全
懶漢模式:
public class SingleOne {
private static SingleOne single;
private SingleOne() {}
public static synchronized SingleOne getInstance() {
if(single == null) {
single = new SingleOne();
}
return single;
}
}
餓漢模式:
public class SingleTwo {
private static SingleTwo single = new SingleTwo();
private SingleTwo() {}
public static SingleTwo getInstance() {
return single;
}
}
列舉模式:
public enum Single {
INSTANCE;
}
靜態內部類模式:
public class Singleton {
private Singleton() {}
private static class SingletonInstance {
private static final Singleton INSTANCE = new Singleton();
}
public static Singleton getInstance() {
return SingletonInstance.INSTANCE;
}
}
雙重檢查模型:
public class Singleton {
private static volatile Singleton singleton;
private Singleton() {}
public static Singleton getInstance() {
if (singleton == null) {
synchronized (Singleton.class) {
if (singleton == null) {
singleton = new Singleton();
}
}
}
return singleton;
}
}
效率由高到低排列:靜態內部類式 > 餓漢式 > 列舉式 > 雙重檢測鎖式 > 懶漢式
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/205289.html
標籤:其他
上一篇:學習MySQL備份一篇就夠了!!!(完全備份、增量備份、備份恢復)
下一篇:因為多執行緒,我懟了一個同事
