ConcurrentHashmap同时执行write和get操作

SBa*_*ach 4 java concurrency concurrenthashmap

我有一个关于ConcurrentHashMaps的问题.可以说我有2个线程.线程A尝试从共享的ConcurrentHashMap获取对象.线程B清除共享映射.如果线程A和线程B同时访问共享资源会发生什么.我搜索了文档和网络,找不到确定的答案,也尝试自己做但无济于事.

mha*_*san 7

ConcurrentHashMap 根据并发级别划分为不同的.因此,不同的线程可以在java中同时访问不同的段.

线程可以读取由java中的其他一些线程锁定的ConcurrentHashMap段吗?

是.当线程锁定一个段进行更新时,它不会阻止它进行检索(由get方法完成),因此其他一些线程可以读取段(通过get方法),但是它可以在锁定之前读取数据.

对于诸如putAll之类的操作,并发检索可能反映仅删除一些条目.对于诸如清除并发检索之类的操作,可能反映仅删除一些条目.