Guava图书馆很有用 MultuMap
替换 Map<Object, Collection>
以避免空检查。
我找不到模拟的 MultiMap
为了 ConcurrentHashMap
.
它存在吗?
做 Multimaps.forMap(new ConcurrentHashMap<Object, Object>());
对的?
p、 s。
初始化:
private Multimap<Object, ComplexCalcStrategy> strategies = HashMultimap.<Object, ComplexCalcStrategy>create();
第一个线程:
for (Integer optionId : strategy.getOptions()) {
strategies.put(optionId, strategy);
}
第二个线程:
Collection<ComplexCalcStrategy> strategiesThatNeedUpdating = strategies.get(mktDataChange.getOptionId());
for (ComplexCalcStrategy strategy : strategiesThatNeedUpdating) {
updateMarketData(strategy.getStrategy(), mktDataChange);
}
现在这个代码导致 ConcurrentModificationexception
.
2条答案
按热度按时间9bfwbjaz1#
如果我没记错的话
HashMultimap.create();
然后ImmutableSetMultimap.Builder
.lyr7nygr2#
你可以用
初始化:
第一个线程:
第二个线程: