我在理解ConcurrentSkipListMap的concureency时遇到问题。
我有以下声明:
ConcurrentSkipListMap<Integer, ConcurrentSkipListMap<String, Configuration>> map
是否也可以像下面这样的形式使用?
ConcurrentSkipListMap<Integer, HashMap<String, Configuration>> map
可以保留所有地图数据的并发性吗?
提前致谢!
答案 0 :(得分:2)
这实际上取决于如何访问内部地图。
如果您在此内部地图上没有任何并发,则可以将其声明为HashMap
。否则,如果多个线程可以同时访问它,那么您应该使用并发结构,例如ConcurrentHashMap
。
答案 1 :(得分:1)
这取决于你想拥有的操作。例如,如果需要在嵌套映射中使用putIfAbsent,则需要嵌套的ConcurrentSkipListMap。 如果您将获得嵌套映射并使用多线程代码处理它,那么它应该是Concurrent&lt; ...&gt; Map。