阿里云做网站步骤,中山网站建设推广,电商网站建设目的,网站不同一、单例模式
单例模式是一种创建型的设计模式#xff0c;构造函数是私有的#xff0c;因此只能在类中创建一个实例#xff0c;且对外提供一个静态公有方法获取这个实例。
二、创建方法
1. 懒汉式#xff08;线程不安全#xff09;
public class Singleton{private st…一、单例模式
单例模式是一种创建型的设计模式构造函数是私有的因此只能在类中创建一个实例且对外提供一个静态公有方法获取这个实例。
二、创建方法
1. 懒汉式线程不安全
public class Singleton{private static Singleton instance;private Singleton(){}public static Singleton getInstance(){if(instancenull){ //多线程时此处会产生线程安全问题instance new Singleton();}return instance;}
}2. 懒汉式线程安全
public class Singleton{private static Singleton instance;private Singleton(){}public synchronized static Singleton getInstance(){if(instancenull){instancenew Singleton();}return instance;}3. 双重检查锁DCLDouble-Checked Locking线程安全
public class Singleton{private volatile static Singleton instance;private Singleton(){};public static Singleton getInstance(){if(instancenull){synchronized(Singleton.class){if(instancenull){instancenew Singleton();}}}return instance;}
}4. 饿汉式线程安全
public class Singleton{private final static Singleton instancenew Singleton();private Singleton(){}public static Singleton getInstance(){return instance;}5. 静态内部类线程安全
public class Singleton{private Singleton(){}private static class InnerClass{private final static Singleton INSTANCEnew Singleton();} public static Singleton getInstance(){return InnerClass.INSTANCE;}
}6. 枚举类线程安全
public enum Singleton{INSTANCE;public void doSomething(String str){System.out.println(str);}
}