我有一个用于从持久性项目加载的类,在PersistenceController
类中使用以下方法:
Item loadItem(int id);
所以现在我想在其他控制器中实现以下方法:
synchronized Item getItem(int id){
Item result= getItemFromMemory(id);
if (result==null){
result=PersistenceController.loadItem(id);
}
return result;
}
目标是确保同一时间在内存中只有一个(或零个)具有相同 id 的项目实例。这种方法有效,但有一个问题:每个加载项必须相互等待。我想更改同步方案,以便只有在两者具有相同 ID 的情况下才能等待其他呼叫。
最好的方法是什么?