Twa*_*ood 1 java concurrency thread-safety concurrenthashmap treemap
我有一个嵌套地图的案例,如下所示:
private final static Map<String, TreeMap<Long,String>> outerConcurrentMap = new ConcurrentHashMap<>();
Run Code Online (Sandbox Code Playgroud)
我知道这ConcurrentHashMap是线程安全的,但我想知道TreeMap这个 CHM 持有的 s ,它们在 CHM 内部也是线程安全的吗?
我正在做的操作是:
get(K)使用.从 CHM 检索 TreeMaptailMap(K,boolean)。clear()CHM。在这种情况下我想要一个线程安全的结构。上述实现是否线程安全?如果没有,请提出解决方案。
一旦完成,TreeMap<?, ?> tm = chm.get(key);您就不再处于线程安全区域了。特别是,如果另一个线程更新树状图(通过或不通过 CHM),您可能会也可能不会看到更改。更糟糕的是,您所拥有的地图副本tm可能已损坏......
一种选择是使用线程安全映射,例如 ConcurrentSkipListMap。