针对使用两个ConcurrentHashMap的问题优化,可参考
liweiGe opened this issue · comments
感谢你的分享和启发!
为此我的做法是,将 state 作为 ObserverProxy 的字段来管理,这样我们保留了语义的明确,没有增加学习成本,且让 Map 及其元素的使用更为简便。
private final ConcurrentHashMap<Observer<? super T>, ObserverProxy> observerMap = new ConcurrentHashMap();
@Override
public void onChanged(T t) {
ObserverProxy proxy = observerMap.get(target);
if (proxy != null && proxy.state) {
proxy.state = false;
if (t != null || isAllowNullValue) {
target.onChanged(t);
}
}
}
目前已将本次修改的结果纳入 V6.1 更新。