import java.util.concurrent.atomic.AtomicReference;
public class HungrySingleton {
private static HungrySingleton instance = new HungrySingleton();
private HungrySingleton() {
}
public static HungrySingleton getInstance() {
return instance;
}
}
/**
* 饿汉
*/
class HungrySingleton2 {
private static HungrySingleton2 instance;
static {
instance = new HungrySingleton2();
}
private HungrySingleton2() {
}
public static HungrySingleton2 getInstance() {
return instance;
}
}
/**
* lazy-loading
*/
class LazyLoadingSingleton {
private static class SingletonHolder {
private static final LazyLoadingSingleton instance = new LazyLoadingSingleton();
}
private LazyLoadingSingleton() {
}
public static final LazyLoadingSingleton getInstance() {
return SingletonHolder.instance;
}
}
class EnumSingleton {
private EnumSingleton() {
}
public static EnumSingleton getInstance() {
return Singleton.INSTANCE.getInstance();
}
enum Singleton {
INSTANCE;
/**
* 单例
*/
private EnumSingleton singleton;
//JVM会保证此方法绝对只调用一次
private Singleton() {
singleton = new EnumSingleton();
}
public EnumSingleton getInstance() {
return singleton;
}
}
}
class CasSingleton {
private static final AtomicReference<CasSingleton> INSTANCE = new AtomicReference<CasSingleton>();
private CasSingleton() {}
public static final CasSingleton getInstance() {
while (true) {
CasSingleton singleton = INSTANCE.get();
if (singleton != null) {
return singleton;
}
singleton = new CasSingleton();
INSTANCE.compareAndSet(null,singleton);
return singleton;
}
}
}
【面试】不使用synchronized和lock,如何实现一个线程安全的单例
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- 单例,大家肯定都不陌生,这是Java中很重要的一个设计模式。稍微了解一点单例的朋友也都知道实现单例是要考虑并发问题...
- 单例,大家肯定都不陌生,这是Java中很重要的一个设计模式。稍微了解一点单例的朋友也都知道实现单例是要考虑并发问题...
- 心存信念,勇往直前。大家晚上好,欢迎打开风荷感悟时光。今晚我给大家分享的是一个新寓言故事:井底之蛙外传之青蛙小青的...
- whiteSpace: "nowrap",//文字不换行 overflow: "hidden",//隐藏文字 te...