/** * 饿汉式 线程安全的,但是会一直占用内存 * */ public class SingletonInstance{ private SingletonInstance(){ } private static final SingletonInstance instance=new SingletonInstance(); public static SingletonInstance getInsatnce(){ return instance } }
/** *懒汉式 非线程安全 */ public class SingletonInstance{ private SingletonInstance(){ } private static SingletonInstance instance; public static SingletonInstance getSingletonInstance(){ if(instance==null){ instance=new SingletonInstance(); } return instance } }
/** *懒汉式 线程安全的实现 */ public class SingletonInstance{ private SingletonInstance(){ } private static SingletonInstance instance; public static synchronized SingletonInstance getSingletonInstance(){ if(instance==null){ instance=new SingletonInstance(); } return instance } } /** *双重检查锁模式 */ public class SingletonInstance{ private SingletonInstance(){ } //使用volatile保证了多线程访问时instance变量的可见性,避免了instance初始化时其他变量属性还没赋值完时,被另外线程调用 private static volatile SingletonInstance instance; public static SingletonInstance getSingletonInstance(){ if(instance==null){ synchronized(SingletonInstance.class){ if(instance==null){ instance=new SingletonInstance(); } } } return instance } }
单例模式的4种写法
最新推荐文章于 2024-04-12 16:25:57 发布