单例模式性能问题解决方案

在单例模式中,遇到多线程总要考虑一个性能问题,下面的代码是double-checked locking设计实现单例模式。
先判断,如果创建的对象是null,就改加同步锁,然后再判断。这样避免了多线程下的重复创建对象,也解决了
整体加同步锁倒是性能的缺陷问题.在JDK 5之后,Java使用了新的内存模型。volatile关键字有了明确的语义。
在JDK1.5之前,volatile是个关键字,但是并没有明确的规定其用途——被volatile修饰的写变量不能和
之前的读写代码调整(控制内存),读变量不能和之后的读写代码调整!因此,只要我们简单的把instance加
上volatile关键字就可以了。来源于论坛:http://bbs.csdn.net/topics/391840031
public class SingletonClass { 

  private volatile static SingletonClass instance = null; 

  public static SingletonClass getInstance() { 
    if (instance == null) { 
      synchronized (SingletonClass.class) { 
        if (instance == null) { 
          instance = new SingletonClass(); 
        } 
      } 
    } 
    return instance; 
  } 

  private SingletonClass() { 

  } 

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值