一、饿汉式
(多线程并发,相对安全)
class Single {
private Single() { }
private static final Single s = new Single();
public static Single getInstance() {
return s;
}
}
二、懒汉式
<pre name="code" class="java">class Single{
private Single(){ }
private static Single s = null;
public static Single getInstance(){
if(s==null)
s = new Single();
return s;
}
}
懒汉式,延迟加载模式,会出现线程安全问题;
解决方式一:加同步(同步函数 或 同步代码块)
锁→→Single.class
缺点是:效率低!
解决方式二:
可以通过 if 对单例对象的双重判断形式
public static Single getInstance(){
if(s == null) {
synchronized(Single.class){
if(s == null )
s = new Single();
}
}
return s;
}