我应该在列表中的每个对象上保持锁定?
示例:
我有许多不同的
Indicator
个对象。我的
Indicator
个对象保留了一些可以更新的状态 '飞行中',即我想抓住列表中的任何特定指标, 写锁定并更新它。我不想不必要地锁定它 读取,所以我想对它们保持读写锁定。
我应该把锁放在哪里?我应该将它们保存在地图中,由对象ID映射吗?
也许如果我保留一个由对象本身映射的锁的映射,那么这就足以获得Indicator
以及锁的列表(但我担心的是我还没有遇到的问题如果对象都在地图的keySet中,则为线程安全。)
或者可能使锁定为Indicator类的属性?
或者开销是否可以忽略不计我应该用synchronized
锁定每个对象?