校园网站建设培训稿,松门建设规划局网站,unity制作app教程,新康家园网站建设单例模式
单例模式Singleton是一种创建型模式#xff0c;指某个采用Singleton单例模式#xff0c;则这个类在同一个
JVM上#xff0c;只能产生一个实例供外部访问#xff0c;并且仅提供一个全局的访问方式。
懒汉式
懒汉式线程不安全
public class Singleton1 {privat…单例模式
单例模式Singleton是一种创建型模式指某个采用Singleton单例模式则这个类在同一个
JVM上只能产生一个实例供外部访问并且仅提供一个全局的访问方式。
懒汉式
懒汉式线程不安全
public class Singleton1 {private static Singleton1 instance;// 构造方法私有化private Singleton1() {};public static Singleton1 getInstance() {if(instance null) {instance new Singleton1();}return instance;}
}饿汉式
饿汉式线程安全
public class Singleton2 {private static final Singleton2 instance new Singleton2();// 构造方法私有化private Singleton2() {};public static Singleton2 getInstance() {return instance;}
}线程安全的单例模式
饿汉式线程安全全局锁线程安全静态代码块创建单例对象线程安全双重校验锁实现线程安全静态内部类实现线程安全的单例模式内部枚举类实现线程安全 全局锁 public class Singleton3 {private static Singleton3 instance;// 构造方法私有化private Singleton3() {};// 通过synchronized添加全局锁实现线程安全public static synchronized Singleton3 getInstance() {if (instance null) {instance new Singleton3();}return instance;}
}静态代码块 public class Singleton4 {private static final Singleton4 instance;// 静态代码块创建单例对象static {instance new Singleton4();}// 构造方法私有化private Singleton4(){}public static Singleton4 getInstance() {return instance;}
}双重校验锁 public class Singleton5 {private static Singleton5 instance;private Singleton5() {}public static Singleton5 getInstance() {if (instance null) {synchronized (Singleton5.class) {if (instance null) {instance new Singleton5();}}}return instance;}
}静态内部类 public class Singleton6 {// 构造方法私有化private Singleton6() {};// 静态内部类private static class SingletonHolder{// 创建单例对象private static Singleton6 instance new Singleton6();}public static Singleton6 getInstance() {return Singleton6.SingletonHolder.instance;}
}静态枚举类 public class Singleton7 {private Singleton7() {}// 内部枚举类enum SingletonEnum{INSTANCE;// 单例对象private Singleton7 instance;private SingletonEnum() {instance new Singleton7();}private static Singleton7 getInstance() {return SingletonEnum.INSTANCE.instance;}}
}