单例模式
单例模式有饿汉式单例模式、懒汉式单例模式和双检锁单例模式三种。
单例模式的好处
单例模式确保一个类只有一个实例对象,并提供了一个全局访问点来访问这个实例
这对于需要控制资源使用或需要共享资源的情况非常有用,比如数据库连接池,通过单例模式,可以避免对资源的重复创建和销毁,从而提高资源利用率和系统性能。
饿汉式:线程安全,一开始就初始化。
1 2 3 4 5 6 7 8 9 10 11 12 13
| public class Singleton { private static Singleton singleton = new Singleton();
private Singleton() {}
public Singleton getSingleton() { return singleton; } }
|
懒汉式:非线程安全,延迟初始化。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| public class Singleton { private static Singleton singleton;
private Singleton() {}
public Singleton getSingleton() { if(singleton==null) { singleton = new Singleton(); } return singleton; } }
|
双重检验锁机制:线程安全,延迟初始化。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| public class Singleton { private volatile static Singleton singleton;
private Singleton() {}
public Singleton getSingleton() { if(singleton==null) { synchronized (Singleton.class){ if(singleton == null) { singleton = new Singleton(); } } } return singleton; } }
|