您的位置:首页 > 其它

四、关于单例模式下的线程安全问题!必须要会!!!!!

2019-04-12 00:56 344 查看

饿汉式

/**
* 饿汉式
* @author Administrator
*
*/
class Single{
private static final Single s=new Single();
private Single() {

}
public static Single getInstance() {
return s;
}
}

懒汉式一

/**
* 懒汉式一
* 延迟加载
* 存在线程安全问题
* @author Administrator
*
*/
class Single1{
private static Single1 s=null;
private Single1() {

}
public static Single1  getInstance() {
if(s==null)
s=new Single1();
return s;
}
}

懒汉式二

/**
* 懒汉式一
* 延迟加载
* 存在线程安全问题
* 解决之后效率低下
* @author Administrator
*
*/
class Single1{
private static Single1 s=null;
private Single1() {

}
public static synchronized Single1  getInstance() {
if(s==null)
s=new Single1();
return s;
}
}

懒汉式三

/**
* 懒汉式二
* 延迟加载
* 存在线程安全问题
* 解决之后较少锁的判断顺序
* @author Administrator
*
*/
class Single2{
private static Single2 s=null;
private Single2() {
}
public static  Single2  getInstance() {
if(s==null) {
synchronized(Single2.class){
if(s==null)
s=new Single2();
}
}
return s;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: