懒汉式:
class Single{
private static Single s = null;
private static Single(){};
public static Single getIntance(){ //这里面有一个问题,在多现程执行红色语句时。有线程安全问题。
// 1.“s”是共享数据, 2.有多条语句在操作“s”那么就存在线程安全,所以要加锁。
if(s==null){
s= new Single();
return s;
}
}
}
.....................................................................................................
class Single{
private static Single s = null;
private static Single(){};
public static synchronized Single getIntance(){ //解决办法1:把函数加为同步函数 知道这个synchronized的锁是什么吗?
//this ? 不是 ,这是静态函数:没有this 他的锁是(Single. class)
if(s==null){ //这样写程序每次进来都要判断锁,效率低。
s= new Single();
return s;
}
}
}
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
class Single{
private static Single s = null; 这样写效率更高。
private static Single(){};
public static Single getIntance(){
if(s==null)
{
synchronizde(Single.class)
{
if(s==null){
s= new Single();
}
}
}
return s;
}
}
我们自己写饿汉式的 考试一般考这个 共勉。。。。。
|
|