//两种单例模式 关于线程安全的问题
//饿汉式 是线程安全的*/
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){
synchronized(Single.class){
if(s == null){
s = new Single();
}
}
}
return s;
}
}
//饿汉式 是线程安全的*/
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){
synchronized(Single.class){
if(s == null){
s = new Single();
}
}
}
return s;
}
}
本文探讨了单例模式中饿汉式与懒汉式的实现方式及其线程安全性问题。饿汉式通过静态初始化确保实例唯一且线程安全;懒汉式支持延迟加载,但需额外同步机制保证线程安全。
2046

被折叠的 条评论
为什么被折叠?



