餓漢式(線程安全,調用效率高,但是,不能延時加載) public class Singleton{ private static Singleton instance =new Singleton();//類一初始化時,就立即加載對象 private Singleton(){};//構造器私有化 public static Singleton getInstance(){ return instance; }????? 類加載是天然線程安全的?
懶漢式(線程安全,調用效率不高,但是可以延時加載) public class Singleton{ private static Singleton instance;//類初始化時,不初始化這個對象 private Singeleton(){}//構造器私有化 public static synchronized Singleton getInstance(){ if(????instance==null){ instance = new Singleton(); } return instance; }???? ?
靜態內部類實現(線程安全,調用效率高,并且實現了延時加載) public class Singleton(){ private static class SingletonClassInstance(){ private static final Singleton instance = new Singleton() } private Singleton(){};//構造器私有化 public static Singleton getInstance(){ return SingletonClassInstance.instance; }???????
使用枚舉實現(線程安全,調用效率高,沒有延時加載,但是可以天然的防止反射和反序列化漏洞) public enum Singleton{ INSTANCE;//這個枚舉的元素,本身就是單例對象 public void SingeletonDemo(){ }???//這個部分是添加自己需要的操作