您的位置:首页 > 编程语言 > Java开发

java 单件模式

2017-04-05 11:19 134 查看

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

单件模式与全局变量:

全局变量必须在程序一开始就创建这个变量,如果对象十分耗费资源且这次执行过程中未用得到,则造成了浪费。单件模式可以在需要是创建对象。

单件模式用于需要一个对象的情况,例如:线程池,缓存,注册表等。

示例

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方法,不过性能不佳

也可以急切实例化,可是就直接创建实例。

如果使用多个类加载器,可能会导致多个实例单例模式失效。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java singleton