【问题标题】:CDI postconstruct initializing fieldCDI 构造后初始化字段
【发布时间】:2012-12-15 04:59:16
【问题描述】:

有谁知道在使用 PostConstruct 注释的方法中初始化实例字段是否被认为是线程安全的?我不太确定是否必须使我的 ApplicationScoped bean 的字段易失,以便其他线程可以真正看到这些值...

感谢任何提示或答案!

【问题讨论】:

    标签: multithreading cdi postconstruct


    【解决方案1】:

    我没有直接引用绝对保证这一点的规范,但@PostConstruct 应该是线程安全的。

    CDI 运行时完全负责创建 bean,并且只会为给定范围创建一个实例。 @PostConstruct 在 bean 可在此类范围内或通过注入访问之前运行。

    【讨论】:

    • 谢谢,如果你能确定地告诉我会更好,因为从 JMM 的角度来看,如果没有内存障碍,我认为我必须让它们变得易失。
    • 您会想,但在 CDI 初始化 bean 之前,您的其他线程可能甚至不会获得对实例的引用。在并发请求 bean 的情况下,我很确定所有线程都停留在假设的 beanManager.getBean(...) 调用上。
    • 谢谢,这当然是唯一有意义的行为,但我想确定它而无需阅读规范。 ;)
    猜你喜欢
    • 2011-03-28
    • 1970-01-01
    • 1970-01-01
    • 2011-02-15
    • 2012-04-11
    • 2020-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多