一个普通的Java类实现的单例模式代码如下:
/**
* 单例模式
* @author glogo
*
*/
public class Singleton {
private static volatile Singleton singleton = null;
//构造函数必须是private
private Singleton(){}
public static Singleton getInsSingleton(){
if(singleton == null){ //外层if的作用:一旦唯一的一个实例被创建之后无需再synchronized,提高效率。
synchronized(Singleton.class){
if(singleton == null)
singleton = new Singleton();
}
}
return singleton;
}
}
它是实现了双重检查的。
线程级别的单例模式:通过ThreadLocal<T>类型的静态成员变量 定义 仅在线程内部生效的全局对象。
public class SingletonThread{
private static final ThreadLocal<SingletonThread> local =
new ThreadLocal<SingletonThread>(){
@Override
protected SingletonThread initialValue() {
return new SingletonThread();
}
};
private SingletonThread(){}
public static SingletonThread getISingleton(){
return local.get();
}
}
java 单例模式
最新推荐文章于 2024-06-06 20:35:43 发布