java中两种单例模式
//懒汉式(线程不安全) class LazySingleton{ private static LazySingleton singleton; private LazySingleton(){} public static LazySingleton getInstance(){ if(singleton==null){ singleton = new LazySingleton(); } return singleton; } } //饿汉式(推荐使用) class eSingleTon{ private static eSingleTon singleton = new eSingleTon(); private eSingleTon(){} public static eSingleTon getInstance(){ return singleton; } }
上面两个是单例模式,想必都不陌生。
对于懒汉式有个缺点,就是在多线程的情况会有一定的问题存在。假如线程A和线程B同时实例这个单例。进入if的判空就会分别实例出一个singleton.这就违背了单例模式的初衷。
这里推荐使用饿汉式,每次都会实例化,避免了多线程的问题