• JAVA 单例模式


    //饿汉式单例模式

    public class Hungry {
            private Hungry() {
                        }
            private final static hungry = new Hungry();
            public static Hungry getInstance() {
            return hungry;
        }

    }

    单线程下的懒汉式

    //懒汉式单例模式

    public class LazyMan {

        private LazyMan() {
            // TODO Auto-generated constructor stub
        }
        
        private static LazyMan lazyman;
        
        public static LazyMan getInstance() {
            if (lazyman == null) {
                lazyman = new LazyMan(;)
            }
            return lazyman;
        }
        }

    //双重检测锁模式的DCL懒汉式单例

    public class LazyMan {

        private LazyMan() {
            // TODO Auto-generated constructor stub
            System.out.println(Thread.currentThread().getName() + "ok");
        }
        //volatile 保证原子性操作
        private volatile static LazyMan lazyman;
        //双重检测锁模式的DCL懒汉式单例
        public static LazyMan getInstance() {
            if (lazyman == null) {
                synchronized(LazyMan.class) {  //加锁
                    if(lazyman == null)
                        lazyman = new LazyMan();
                }
                
            }
            return lazyman;
        }
        
        public static void main(String args[]) {
            for(int i=0;i<10;i++) {
                
                new Thread(()-> {
                    lazyman.getInstance();
                }).start();
            }
        }
        
    }

  • 相关阅读:
    Spring-MVC使用JSR303及拦截器,增强网络隐私安全
    数据治理:微服务架构下的数据治理
    超详细教程:在Blender中打造毛毡风格角色
    一个高性能类型安全的.NET枚举实用开源库
    centos7 安装 superset 2.0 并安装 pg mysql等驱动
    2022/8/15 考试总结
    【暴力DP】CF1409 F
    《进程状态》
    模板的注意事项
    伦敦银走势最新分析
  • 原文地址:https://blog.csdn.net/tswang6503/article/details/127662666