【问题标题】:Do the bundle activate and deactivate methods needs to be synchronized in osgi在 osgi 中是否需要同步 bundle 的激活和停用方法
【发布时间】:2018-06-08 05:09:06
【问题描述】:

我们有一个组件并在其上定义了激活和停用方法。我们在 activate 方法中创建了一些对象,在 deactivate 中我们正在清理它。我们是否需要同步正在创建的对象,因为可能会发生多次调用activate deactivate。

【问题讨论】:

    标签: osgi osgi-bundle


    【解决方案1】:

    对 activate 和 deactivate 方法的调用之间存在严格的“发生之前”关系。这意味着可以保证您的activate method will finish before the deactivate method is called将传递相关的内存屏障,以确保您在激活中设置的任何字段在停用时都是可见的。

    从同步的角度来看,重要的是要确保您的组件具有的任何 动态 引用都以线程安全的方式处理。这些引用可以在您的组件仍在运行时被反弹,因此需要应对并发更改。

    【讨论】:

      【解决方案2】:

      声明式服务组件对象仅用于一个激活、停用周期。这些方法只会被调用一次。

      如果再次激活组件,则会为其创建一个新的 java 对象。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-05-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-19
        • 1970-01-01
        相关资源
        最近更新 更多