对不起,标题的措辞,没有解释清楚。如果有人可以编辑它会很好:)
我有四种方法,访问共享状态。目前它们不是线程安全的。共享状态是一个列表。其中两个方法修改列表,两个迭代它。可以简单地同步所有方法,但这会导致性能下降 - 只要没有修改方法正在运行,迭代方法在多个线程中同时运行是完全安全的。
需要一种允许多个读取器运行或单个写入器运行的锁定方法。
private List<T> list;
public void insert(T t) {// Write shared state
list.add(t);
}
public void remove(T t) {// Write shared state
list.remove(t);
}
public void doStuff(T t) {// Read shared state
// iterate list and do stuff
}
public void doOtherStuff() {// Read shared state
// iterate list and do stuff
}