码迷,mamicode.com
首页 > 编程语言 > 详细

java 设计模式-单例模式-懒加载

时间:2016-11-14 17:31:51      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:java   存在   最好   执行   方案   过程   需要   return   creat   

首先推荐种最好的单例模式实现方式(没有之一)

public class Manager {

    private Manager() {
        
    }
    
    public static Manager getInstance() {
        return ManagerHolder.instance;
    }
    
    private static class ManagerHolder {
        private static final Manager instance = new Manager();
    }
}

然后解释下为什么要用这种方式:

* 内部类只在需要的时候才会被类加载器加载,实现了懒加载,即在需要的时候才实例化出一个Manager,而且是唯一的一个

* 同时由于instance是static final类型,保证了内存中只有这样一个实例存在,而且只能被赋值一次,从而保证了线程安全性

(即使在高并发的情况下多个线程同时访问getInstance()方法 也能够保证实例的唯一性)

其他没有采用内部类的实现方式 以下是目前见过最好的:

public static class SingletonOptimizeLazy {
    static SingletonOptimizeLazy instance = null;
    public static SingletonOptimizeLazy getInstance() {
      if (instance == null) {
        createInstance();
      }
      return instance;
    }
    private synchronized static SingletonOptimizeLazy createInstance() {
      if (instance == null) {
        instance = new SingletonOptimizeLazy();
      }
      return instance;
    }
}

以上这种解决方式 主要思想是将实例化的过程抽象出来 放在一个sychronized方法中执行 这样也能够实现懒加载与并发安全

不过仍然推荐使用内部类的解决方案

java 设计模式-单例模式-懒加载

标签:java   存在   最好   执行   方案   过程   需要   return   creat   

原文地址:http://www.cnblogs.com/balfish/p/6062389.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!