zoukankan      html  css  js  c++  java
  • 单例设计模式(Singleton)的优化

    单例模式的优化

    单例模式懒汉式写法,单例模式的优化有以下四个方面:

    1. 使用同步保证线程安全synchronized
    2. 使用volatile关键字:volatile关键字提醒编译器后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。
    3. 防止反射调用私有构造方法
    4. 让单例序列化安全

    代码实现

    import java.io.Serializable;
    
    public class Singleton implements Serializable {
    	//加上volatile关键字保证变量的一致性
    	private volatile static Singleton singleton = null;
    
    	private Singleton() {
    	    if (singleton != null) {
    	        throw new RuntimeException("此类为单例模式,已经被实例化");
    	    }
    	}
    
    	public static Singleton getInstance() {
    	    //外层判断是防止已经new过了
    	    if (singleton == null) {
    			//加上synchronized关键字,保证线程安全
    	        synchronized (Singleton.class) {
    	            if (singleton == null) {
    	                singleton = new Singleton();
    	            }
    	        }
    	    }
    	    return singleton;
    	}
    }
  • 相关阅读:
    Windows 服务程序(一)
    API---注册表编程
    API---文件操作
    main(argc, char *argv[])
    C 自删除技术---批处理方式
    分治法排序
    TDD尝试:nodejs单元测试
    尝试create tech team
    Yum重装走过的坑
    求生欲很强的数据库
  • 原文地址:https://www.cnblogs.com/zxfei/p/10926775.html
Copyright © 2011-2022 走看看