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

来源:互联网 发布:手机屏幕测试软件 编辑:程序博客网 时间:2024/06/05 05:04
在单例模式中,遇到多线程总要考虑一个性能问题,下面的代码是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() {   } }

0 0
原创粉丝点击