线程安全的单例模式

来源:互联网 发布:网天概预算软件 编辑:程序博客网 时间:2024/06/10 11:36
public class SafeLazyInitialization {    private static Resource resource;    public synchronized static Resource getInstance() {       if (resource == null)          resource = new Resource();      return resource;    }}
public class EagerInitialization {   private static Resource resource = new Resource();  public static Resource getResource() { return resource; } }
//延迟初始化public class ResourceFactory {     private static class ResourceHolder {         public static Resource resource = new Resource();    }    public static Resource getResource() {         return ResourceHolder.resource ;     }}
public class SingletonDemo {     //注意需要volatile    private static volatile SingletonDemo instance = null;    private SingletonDemo() {  }    public static SingletonDemo getInstance() {        if (instance == null) { //二次检查,比直接用独占锁效率高               synchronized (SingletonDemo .class){                    if (instance == null) {                               instance = new SingletonDemo ();                     }             }        }        return instance;    }}