这可能是一个非常简单的问题,但这对我来说并不完全清楚。
我有一个bean如下:
@Singleton
@Startup
@Lock(READ)
public class SomeDataBean {
List<Foo> foos;
@PostConstruct
public void init() {
// Build foos;
}
public List<Foo> getFoos() {
return foos;
}
@Lock(WRITE)
public void modifyFoos() {
// This could be potentially called too
}
}
随后,这个bean被注入(使用CDI - 环境是Wildfly 8.2),进入各种其他bean(请求/会话/视图等)。现在,他们都访问了Foo
的这个列表。我的问题是,当可能modifyFoos()
可能被另一个bean调用时,按原样返回列表是否安全。或者这是否会永远不会发生并且由容器保证?
我已经阅读了有关容器管理交易等的一些文档,但它并不完全清楚它在这种情况下是如何工作的。例如,用并发容器替换list是否更好?