单例模式的4种写法

来源:互联网 发布:阿里云软件下载 编辑:程序博客网 时间:2024/05/20 05:23
/***   饿汉式   线程安全的,但是会一直占用内存**/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}}