是否需要在osgi中同步bundle激活和取消激活方法

时间:2018-06-08 05:09:06

标签: osgi osgi-bundle

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

声明性服务组件对象仅用于一个激活,停用循环。只有一个调用这些方法。

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