解决方案 »
- 类型转换问题
- 关于在一个类中调用相同包下的另一个类的问题
- 字符串,已知字符串“1;SN ;CCTV "把字符串放到Array数组中以分号相隔,Array(0)为1,
- resin3 or java的出错提示: java.lang.OutOfMemoryError: unable to create new native thread
- 紧急问题!JAVA高手帮顶啊!跪谢!
- 关于jar的问题
- 急求float数组相同元素个数元素计数50分
- Thinking in Java中的一道习题?(看不太懂它的意思)
- JAVA and C/C++
- 安卓开发环境的搭建
- 请问高手,toolkit这个类是什么设计模式?
- java实现高精度计时,比如精确到小数点后9位小数
private static final Single instance =new Single();
private Single(){};
public Single getInstance(){
return instance;
}
}
懒汉式
[code=java]
class Single{
private static Single instance;
private Single(){};
public Single getInstance(){
if(instance==null)
synchronized (Single.class) {
if(instance==null)
instance=new Single();
}
return instance;
}
}还有一种经典写法:class Single{
private Single(){};
private static class Factory{
private static final Single instance=new Single();
}
public Single getInstance(){
return Factory.instance;
}
}
懒汉式存在线程安全问题,一般会用synchronized关键字修饰获得对象的方法。
饿汉式不存在线程安全问题。
可以看看这:http://blog.csdn.net/gy40235/article/details/25203909
在多线程环境下也是安全的。
其实最重要的一点是类要加修饰符final 因为单例不能被继承。
即使构造函数私有化还是能被继承的~~