草庐IT

java - 延迟加载的单例 : Double-checked locking vs Initialization on demand holder idiom

coder 2024-03-04 原文

我需要在并发环境中延迟加载资源。加载资源的代码应该只执行一次。

两者都是Double-checked locking (使用 JRE 5+ 和 volatile 关键字)和 Initialization on demand holder idiom似乎很适合这份工作。

仅通过查看代码,按需初始化持有人惯用语似乎更清晰、更高效(但是,嘿,我在这里猜测)。尽管如此,我仍将不得不注意并记录我的每个单例的模式。至少对我来说,很难理解为什么当场写成这样的代码......

我的问题是:哪种方法更好?为什么? 如果你的答案是否定的。您将如何在 Java SE 环境中满足这一要求?

备选方案

我可以为此使用 CDI 而不是将它强加于我的整个项目吗?那里有文章吗?

最佳答案

添加另一个可能更清洁的选项。我建议枚举变体:

What is the best approach for using an Enum as a singleton in Java?

关于java - 延迟加载的单例 : Double-checked locking vs Initialization on demand holder idiom,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6189099/

有关java - 延迟加载的单例 : Double-checked locking vs Initialization on demand holder idiom的更多相关文章

随机推荐