Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ConcurrentHashMap读取、写入和清除()_Java_Java.util.concurrent_Concurrenthashmap - Fatal编程技术网

Java ConcurrentHashMap读取、写入和清除()

Java ConcurrentHashMap读取、写入和清除(),java,java.util.concurrent,concurrenthashmap,Java,Java.util.concurrent,Concurrenthashmap,假设有3个读取线程和1个写入线程。 写入线程调用map.clear()。它将导致什么异常或影响?它将清除映射,正如其名称所示。清除方法将清除整个映射,即删除所有条目 考虑到并发性,对于读取操作,没有任何变化。他们将只读取地图在访问时的值。但是,对于使用写入操作的其他线程,ConcurrentHashMap会自动等待清除操作完成,这样您就不会体验到非同步并发带来的奇怪效果 仔细阅读官方文档,它解释了所有影响:“考虑到并发性,其他线程将自动等待清除操作完成,然后读取清除的映射。”根据Concurr

假设有3个读取线程和1个写入线程。
写入线程调用map.clear()。它将导致什么异常或影响?

它将清除映射,正如其名称所示。

清除方法将清除整个映射,即删除所有条目

考虑到并发性,对于读取操作,没有任何变化。他们将只读取地图在访问时的值。但是,对于使用写入操作的其他线程,
ConcurrentHashMap
会自动等待
清除
操作完成,这样您就不会体验到非同步并发带来的奇怪效果



仔细阅读官方文档,它解释了所有影响:

“考虑到并发性,其他线程将自动等待清除操作完成,然后读取清除的映射。”根据
ConcurrentHashMap
的Javadoc,这种说法是错误的。读卡器不等待写卡器,但它们返回最新的状态,可以访问。您是对的,它只适用于写操作,这也是有意义的,这正是同步所有操作的类的主要优势:可以快速执行读操作,没有同步开销,只有写操作才有这种开销。我将编辑答案。如果用户回答了您的问题,请同时接受他的答案()。如果没有,请说明还有什么问题没有回答,这是StackOverflow的一个非常关键的部分,非常感谢。