java实现单例模式的几种方式

来源:互联网 发布:挣多少钱才能养家 知乎 编辑:程序博客网 时间:2024/06/13 23:38

我们知道实现单例模式的方式有很多种,如:懒汉式加载、饿汉式、双检锁的方式实现单例,今天主要介绍一下静态内部类、枚举、cas方式实现单例


静态内部类的方式实现单例

package test;/** * 静态内部类实现单例 * @author lenovo * */public class InnerClassSingle {private InnerClassSingle(){//私有化构造函数}private static class Holder{private static final InnerClassSingle instance = new InnerClassSingle();}public static final InnerClassSingle getInstance(){return Holder.instance;}}
枚举的方式实现单例

package test;/** * 通过枚举实现单例 * 通过EnumSingle.INSTANCE.getInstance()方法获取Resource对象 * @author lenovo * */public enum EnumSingle {INSTANCE;private Resource resource;private EnumSingle() {resource = new Resource();}public Resource getInstance(){return resource;}}//目标类class Resource{}
CAS方式实现单例

package test;import java.util.concurrent.atomic.AtomicReference;/** * 通过cas操作实现单例 * 缺点:可能长时间没有获取CPU资源导致一直循环 * @author lenovo * */public class SingleCAS {private static final SingleCAS singleCAS = null;private static AtomicReference<SingleCAS> ref = new AtomicReference<SingleCAS>();private SingleCAS(){//将构造函数私有化}public static SingleCAS getSingle(){for(;;){if(ref.get() != null){return singleCAS;}SingleCAS single = new SingleCAS();if(ref.compareAndSet(null, single)){return ref.get();}}}}

原创粉丝点击