【问题标题】:Threadsafety of Application Scoped Bean应用范围 Bean 的线程安全
【发布时间】:2013-10-16 11:40:07
【问题描述】:

我想将文件系统结构保存在 Application Scoped Bean 中,因为这对所有客户端都有效。 每个客户端都可以读取这个 bean。

但是数据必须每天刷新4次,因为文件系统可能会改变。

是否可以在此用例中使用应用程序范围的 bean,或者刷新数据时是否存在线程安全问题? 什么是替代方法?单身人士?

【问题讨论】:

    标签: jsf-2 scope thread-safety


    【解决方案1】:

    JSF 或 CDI 范围内的注释将为您做的就是控制对象的生命周期。即,当它第一次被引用时,bean 将被实例化,并执行任何注入或 postconstruct 方法。在 ApplicationScoped 的情况下,它还将确保只生成对象的一个​​副本(当然,除非您明确创建一个)。

    话虽如此,类的实例与非容器管理的实例没有什么不同,因为它与线程安全有关。因此,如果您更改对象的属性,而其他一些线程假设它们是一致的,您将遇到问题。 IMO 这是同步访问的问题。任何需要原子性且对对象具有一致视图的操作都应采用某种形式的排他锁。

    来自 JavaBeans 规范的一些支持 -

    2.8 多线程 Java Bean 应该假设它们在多线程环境中运行,并且几个不同的线程可能同时传递事件和/或调用方法和/或 设置属性。 每个 java bean 开发人员都有责任确保他们的 bean 在多线程访问下正常运行。对于简单的 bean,这通常可以通过简单地处理 使所有方法“同步”

    【讨论】:

      猜你喜欢
      • 2012-07-06
      • 1970-01-01
      • 1970-01-01
      • 2012-04-16
      • 1970-01-01
      • 2012-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多