1.懶漢式
執行緒不安全,如果兩個執行緒同時執行到了
if (instance == null)
public static singleton getinstance()
return instance;
} }
執行緒安全的,每次呼叫方法都會對物件枷鎖,非常影響效能
public class singleton
public static synchronized singleton getinstance()
return instance;
} }
執行緒安全的,double-check
public class singleton
public static singleton getsingleton()
} }
return singleton;
} }
2.餓漢式的,這種是借助jvm的特性來實現的,因為靜態變數在類載入的時候就初始化完成了,所以不需要執行緒同步,缺點就是累載入時就完成了
public class singleton
public static singleton getinstance()
}
3.靜態內部類,jvm在呼叫getinstance()時才會進行類的初始化
public class singleton
private singleton (){}
public static final singleton getinstance()
}
4.通過列舉實現,列舉例項的建立時執行緒安全的,並且對序列化***
public enum singleton
}
1.懶漢式
執行緒不安全,如果兩個執行緒同時執行到了
if (instance == null)
public static singleton getinstance()
return instance;
} }
執行緒安全的,每次呼叫方法都會對物件枷鎖,非常影響效能
public class singleton
public static synchronized singleton getinstance()
return instance;
} }
執行緒安全的,double-check
public class singleton
public static singleton getsingleton()
} }
return singleton;
} }
2.餓漢式的,這種是借助jvm的特性來實現的,因為靜態變數在類載入的時候就初始化完成了,所以不需要執行緒同步,缺點就是累載入時就完成了
public class singleton
public static singleton getinstance()
}
3.靜態內部類,jvm在呼叫getinstance()時才會進行類的初始化
public class singleton
private singleton (){}
public static final singleton getinstance()
}
4.通過列舉實現,列舉例項的建立時執行緒安全的,並且對序列化***
public enum singleton
}
java單例模式幾種實現方式
目錄 單例模式的五種實現方式 1 餓漢式 2 懶漢式 3 double checklock實現單例 4 靜態內部類實現模式 5 列舉類 執行緒安全,呼叫效率高,但是不能延時載入 public class imageloader public static imageloader getinstanc...
實現單例的幾種方式
面試 你懂什麼是分布式系統嗎?redis分布式鎖都不會?餓漢式單例 在使用該類的靜態成員時,無論有沒有使用單例類,都會建立單例物件 餓漢式單例 在使用該類的靜態成員時,無論有沒有使用單例類,都會建立單例物件 author wangpeng public class singleton public ...
java 基礎單例模式實現的幾種方式對比
1 餓漢式 執行緒安全,呼叫效率高,但是不能延時載入 public class imageloader public static imageloader getinstance 一上來就把單例物件建立出來了,要用的時候直接返回即可,這種可以說是單例模式中最簡單的一種實現方式。但是問題也比較明顯。單...