【发布时间】:2018-06-08 05:09:06
【问题描述】:
我们有一个组件并在其上定义了激活和停用方法。我们在 activate 方法中创建了一些对象,在 deactivate 中我们正在清理它。我们是否需要同步正在创建的对象,因为可能会发生多次调用activate deactivate。
【问题讨论】:
标签: osgi osgi-bundle
我们有一个组件并在其上定义了激活和停用方法。我们在 activate 方法中创建了一些对象,在 deactivate 中我们正在清理它。我们是否需要同步正在创建的对象,因为可能会发生多次调用activate deactivate。
【问题讨论】:
标签: osgi osgi-bundle
对 activate 和 deactivate 方法的调用之间存在严格的“发生之前”关系。这意味着可以保证您的activate method will finish before the deactivate method is called、和将传递相关的内存屏障,以确保您在激活中设置的任何字段在停用时都是可见的。
从同步的角度来看,重要的是要确保您的组件具有的任何 动态 引用都以线程安全的方式处理。这些引用可以在您的组件仍在运行时被反弹,因此需要应对并发更改。
【讨论】:
声明式服务组件对象仅用于一个激活、停用周期。这些方法只会被调用一次。
如果再次激活组件,则会为其创建一个新的 java 对象。
【讨论】: