java 单件模式

来源:互联网 发布:软件开发行业怎么样 编辑:程序博客网 时间:2024/05/22 09:03

定义:确保一个类只有一个实例,并提供一个全局访问点。

单件模式与全局变量:

  • 全局变量必须在程序一开始就创建这个变量,如果对象十分耗费资源且这次执行过程中未用得到,则造成了浪费。单件模式可以在需要是创建对象。
  • 单件模式用于需要一个对象的情况,例如:线程池,缓存,注册表等。

示例

package singleton;/** * Created by zjy on 2017/4/5. * 双重加锁,首先检查是否创建,如果未检查,进行同步. */public class Singleton {    //当 uniqueInstance 被初始化时,多个线程可以正确处理uniqueInstance实例    private volatile static Singleton uniqueInstance;    public static Singleton getInstance(){        if (uniqueInstance ==null){            //只有第一次彻底执行这段代码            synchronized (Singleton.class){                if (uniqueInstance ==null){                    uniqueInstance = new Singleton();                }            }        }        return  uniqueInstance;    }}
  • 采用双重加锁模式,Java5 之后才能用volatile关键字
  • 也可以延迟创建实例且只同步 getinstance方法,不过性能不佳
  • 也可以急切实例化,可是就直接创建实例。
  • 如果使用多个类加载器,可能会导致多个实例单例模式失效。
0 0