【发布时间】:2011-05-31 14:28:28
【问题描述】:
我需要在并发环境中延迟加载资源。加载资源的代码应该只执行一次。
Double-checked locking(使用 JRE 5+ 和 volatile 关键字)和Initialization on demand holder idiom 似乎都非常适合这项工作。
仅通过查看代码,Initialization on demand holder 惯用语似乎更简洁、更高效(但是,嘿,我猜这里)。尽管如此,我还是必须注意并记录每个单身人士的模式。至少对我来说,很难理解为什么代码会在现场写成这样……
我的问题是:哪种方法更好?为什么? 如果你的答案是否定的。您将如何在 Java SE 环境中解决此要求?
替代品
我可以为此使用 CDI 而不强制它在我的整个项目中使用吗?有文章吗?
【问题讨论】:
标签: java concurrency singleton lazy-loading design-patterns