假设我有以下类,其中包含ElementClass
对象列表并且ElementClass
是可变的:
public class ListContainer {
private List<ElementClass> elements = new ArrayList<ElementClass>();
public ListContainer(int n) {
for (int i = 0; i < n; ++i)
elements.add(new ElementClass());
}
public ElementClass getElement(String index) {
int i = Integer.parseInt(index);
if (i < elements.size())
return elements.get(i);
return null;
}
}
如何确保ElementClass
两个不同的线程不会获取对对象的相同引用并冒着意外行为的风险?这可以通过更改ListContainer
班级来完成,还是必须在班级中采取所有线程安全措施ElementClass
?