饿汉式
class Single{
private static final Single s=new Single();
private Single(){}
public static Single getInstance()
{
return s;
}
}
懒汉式
class Single{
private static Single s=null;
private Single(){}
public static Single getInstance()
{
if(s==null)
s=new Single();
return s;
}
}
饿汉式与懒汉式的区别 懒汉式的特点在于实例的延迟加载,但是当多线程访问时 懒汉式就会出现问题 怎么解决呢?可以加同步解决 使用同步函数或同步代码块 建议同步代码块 同步使用的锁是该类所属的字节码文件对象.
class Single {
private static Single s = null;
private Single() {
}
public static Single getInstance() {
if (s == null) {
synchronized (Single.class) {
if (s == null)
s = new Single();
}
}
return s;
}
}