• 单例模式 (线程安全)


    单例模式是最简单的设计模式之一,保证了一个类只有一个实例,避免了频繁的创建销毁对象而带来性能的损耗。

      1.Spring容器中使用的注册表式实现的单例模式,简单来说,就是使用同一个工具类,管理多个不同类的实例创建,每次只需在工具类中注册该类,即可获得该类的实例。

      2.像我们在搭建heibernate框架时,是sessionFactory创建session, 用session对象操作数据库的。当多个线程共享session时就会出现数据安全问题,因此企业开发中,我们不会把它设计成单例模式。

    /**
     * 单例模式: 双重锁定检查
     * @author wuLei
     */
    public class Single {
        // 类加载时申明对象,  volatile解决多线程共享变量下及时感知变量的最新状态。 
        private volatile static Single single;
        
        //将无参构造私有化, 不允许外界直接new Single()来创建对象。
        private Single () {};
        
        // 创建对象
        public static Single getInstance() {
            // 对象不为空才创建
            if(single == null) {
                // 锁住这个类, 防止线程并发重复创建
                synchronized (Single.class) {
                    /* 之所以加这个判断是因为第一个线程获得了锁,而第二个线程在等待,
                     * 而第一个线程创建对象后离开,此时第二个线程会获得锁重复创建。
                     */
                    if(single == null) {
                        single = new Single();
                    }
                }
            }
            return single;
        }
    }
  • 相关阅读:
    计算机网络学习笔记:第九章.无线网络
    计算机网络学习笔记:第七章.网络安全与攻防
    seq命令的使用
    rm--删除文件或目录
    tar命令-解压和压缩文件
    CentOS最小化安装后找不到ifconfig命令
    shell 字符菜单管理
    linux passwd批量修改用户密码
    Linux shell 判断字符串为空等常用命令
    Linux 中find命令
  • 原文地址:https://www.cnblogs.com/wlwl/p/9478761.html
Copyright © 2020-2023  润新知