如何实现线程安全的延迟初始化?

2023-12-31

有哪些推荐方法可以实现线程安全惰性初始化?例如,

// Not thread-safe
public Foo getInstance(){
    if(INSTANCE == null){
        INSTANCE = new Foo();
    }

    return INSTANCE;
}

对于单例,有一个优雅的解决方案,将任务委托给 JVM 代码进行静态初始化。

public class Something {
    private Something() {
    }

    private static class LazyHolder {
            public static final Something INSTANCE = new Something();
    }

    public static Something getInstance() {
            return LazyHolder.INSTANCE;
    }
}

see

http://en.wikipedia.org/wiki/Initialization_on_demand_holder_idiom http://en.wikipedia.org/wiki/Initialization_on_demand_holder_idiom

以及疯狂鲍勃·李的这篇博文

http://blog.crazybob.org/2007/01/lazy-loading-singletons.html http://blog.crazybob.org/2007/01/lazy-loading-singletons.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何实现线程安全的延迟初始化? 的相关文章

随机推荐