【发布时间】:2016-05-15 10:19:38
【问题描述】:
我正在编写一个包含动态和静态引用的 OSGI 应用程序。每个服务都放在不同的包中。
@Reference (bind = "bindMethod", unbind = "unbindMethod", cardinality = ReferenceCardinality.MANDATORY_UNARY, policy = ReferencePolicy.DYNAMIC)
private final AtomicReference<TestService> testService = new AtomicReference<TestService>();
@Reference (bind = "bindMethod", unbind = "unbindMethod", cardinality = ReferenceCardinality.MANDATORY_UNARY, policy = ReferencePolicy.DYNAMIC)
private AtomicReference<TestService> testService = new AtomicReference<TestService>(); //final is ommitted
protected void bindMethod(TestService atestService)
{
if (TestService.get() == null)
{
testService.set(atestService);
}
}
protected void unbindMethod(TestService atestService)
{
myServices.compareAndSet(testService, null);
}
没有原子引用
@Reference (bind = "bindMethod", unbind = "unbindMethod", cardinality = ReferenceCardinality.MANDATORY_UNARY, policy = ReferencePolicy.DYNAMIC)
private TestService testService;
protected void bindMethod(TestService atestService)
{
testService = atestService;
}
protected void unbindMethod(TestService atestService)
{
testService = null;
}
推荐哪一种,每一种对性能的影响是什么?
【问题讨论】:
标签: java osgi apache-karaf declarative-services