我有一个列表公司对象。在java中正确同步使用
每个对象有几个属性,它们在对象初始化后永远不会改变。其中一个propeties是一个列表,持有用户随着时间的推移可能会增加或减少的对象。
我想每个事务所对象知道有多少用户对象了。
所以我的问题是我应该做这样的
List<Firm> firmsList = getFirmsList();
for(int i=0; i<firmsList.size(); i++)
{
Firm firm = firmsList.get(i);
synchronized(firm)
{
int usersCount = firm.getUsers().size();
}
}
,或者我应该也同步用户对象? (目前用户对象的列表仅在事务所对象访问)
是的,但企业内部的列表可能会增长或缩小:) –
比循环外的列表同步 – Antoniossss
@JoroSeksa但你说它的属性永远不会改变初始化后。所以,那不是真的 - 如果发生这种情况,那么你的班级'Firm'是**不是**不可变的。 – Jesper