我应该在哪里为列表中的每个对象保留读写锁?

时间:2018-01-15 18:35:00

标签: java multithreading concurrency

我应该在列表中的每个对象上保持锁定?

示例:

  

我有许多不同的Indicator个对象。

     

我的Indicator个对象保留了一些可以更新的状态   '飞行中',即我想抓住列表中的任何特定指标,   写锁定并更新它。我不想不必要地锁定它   读取,所以我想对它们保持读写锁定。

我应该把锁放在哪里?我应该将它们保存在地图中,由对象ID映射吗?

也许如果我保留一个由对象本身映射的锁的映射,那么这就足以获得Indicator以及锁的列表(但我担心的是我还没有遇到的问题如果对象都在地图的keySet中,则为线程安全。)

或者可能使锁定为Indicator类的属性?

或者开销是否可以忽略不计我应该用synchronized锁定每个对象?

0 个答案:

没有答案